1.隐式创建 html 标签

<input type="hidden" name="tc_id" value="{{tc_id}}">
复制代码

这种方法一般配合ajax,上面的value使用了模板引擎 2.window['data']

window['name'] = "the window object";
复制代码

3.使用localStorage,cookie等存储

window.localStorage.setItem("name", "xiaoyueyue");
window.localStorage.getItem("name")
复制代码

特点:cookie,localStorage,sessionStorage,indexDB

从上表可以看到,cookie 已经不建议用于存储。如果没有大量数据存储需求的话,可以使用 localStorage 和 sessionStorage 。对于不怎么改变的数据尽量使用 localStorage 存储,否则可以用 sessionStorage 存储。

注意点:存储 object类型数据,此深拷贝方法会忽略掉函数和 undefined

 var obj = {type: undefined,text: 'xiaoyueyue',methord: function () {alert("I am an methord")}}localStorage.setItem('data', JSON.stringify(obj));console.log(JSON.parse(localStorage.getItem('data'))); // {text: "xiaoyueyue"}
复制代码

4.获取地址栏方法 自己封装的方法

function parseParam(url) {var paramArr = decodeURI(url).split("?")[1].split("&"),obj = {};for (var i = 0; i < paramArr.length; i++) {var item = paramArr[i];if (item.indexOf("=") != -1) {var tmp = item.split("=");obj[tmp[0]] = tmp[1];} else {obj[item] = true;}}return obj;}
复制代码

2.正则表达式方法

function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
复制代码

5.标签绑定函数传参

<!--base--><button id="test1" onclick="alert(id)">test1</button><!--高级-->
<button id="test" name="123" yue="xiaoyueyue" friend="heizi" onclick="console.log(this.getAttribute('yue'),this.getAttribute('friend'))">test</button>
复制代码

this拓展 使用this传参,在使用art-template中琢磨出来的,再也不用只传递一个id拼接成好几个参数了!happy!

  var box = document.createElement("div");box.innerHTML ="<button id='1' data-name='xiaoyueyue' data-age='25' data-friend='heizi' onclick='alertInfo(this.dataset)'>点击</button>";document.body.appendChild(box);// name,age,friendfunction alertInfo(data) {alert('大家好,我是' + data.name + ', 我今年' + data.age + '岁了,我的好朋友是' + data.friend + ' !')}
复制代码

这里需要注意一点:存储的data—含有大写的单词 =》这里会统一转化为小写,比如:data-orderId = “2a34fb64a13211e8a0f00050568b2fdd”,在实际取值的时候为 this.dataset.orderid; event 既然可以使用this,那么在事件当中event.target方法也是可以的: 根据 class 获取当前的索引值,参数可以为 event对象

 var getIndexByClass =  function (param) {var element = param.classname ? param : param.target;var className = element.classname;var domArr = Array.prototype.slice.call(document.querySelectorAll('.' + className));for (var index = 0; index < domArr.length; index++) {if (domArr[index] === element) {return index;}}return -1;},
复制代码

6.HTML5 data-* 自定义属性

<button data-name="xiaoyueyue">点击</button>
复制代码
 var btn = document.querySelector("button")btn.onclick = function () {alert(this.dataset.name)}
复制代码

7.字符串传参 单个参数

var name = 'xiaoyueyue',age = 25;var box = document.createElement("div");
box.innerHTML = '<button onclick="alertInfo(\'' + name + '\')">点击</button>';
document.body.appendChild(box);// name, age
function alertInfo(name, age, home, friend) {alert("我是" + name)
}
复制代码

多参传递

  var name = 'xiaoyueyue',age = '25',home = 'shanxi',friend = 'heizi',DQ = "&quot;"; // 双引号的超文本标记语言var params = "&quot;" + name + "&quot;,&quot;" + age + "&quot;,&quot;" + home + "&quot;,&quot;" + friend + "&quot;";var params2 = DQ + name + DQ + ',' + DQ + age + DQ + ',' + DQ + home + DQ + ',' + DQ + friend + DQ;var box = document.createElement("div");box.innerHTML = "<button onclick='alertInfo(" + params + ")'>点击</button>";console.log(box)document.body.appendChild(box);// name, age,home,friendfunction alertInfo(name, age, home, friend) {alert("我是" + name + ',' + "我今年" + age + "岁了!")
复制代码

复杂传参

  var data = [{"name": "xiaoyueyue","age": "25","home": "shanxi","friend": "heizi"}]var box = document.createElement("div"),html ='';for (var i = 0; i < data.length; i++) {html += "<button id='btn'  onclick='alertInfo(id,\"" + data[i].name + "\",\"" + data[i].age + "\",\"" + data[i].home + "\",\"" + data[i].friend + "\")'>点击</button>";}box.innerHTML = html;document.body.appendChild(box);function alertInfo(id, name, age, home, friend) {alert("我是 " + name + " , " + friend + " 是我的好朋友")}
复制代码

8.arguments arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。它是一个类数组的对象。

<button onclick="fenpei('f233c7a290ae11e8a0f00050568b2fdd','100','0号 车用柴油(Ⅴ)')">分配</button>
复制代码
function fenpei() {var args = Array.prototype.slice.call(arguments);alert("我是" + args[2] + "油品,数量为 " + args[1] + " 吨, id为 " + args[0])}
复制代码

9.form表单 借助form表单,ajax传递序列化参数

// form表单序列化,摘自JS高程
function serialize(form) {var parts = [],field = null,i,len,j,optLen,option,optValue;for (i = 0, len = form.elements.length; i < len; i++) {field = form.elements[i];switch (field.type) {case "select-one":case "select-multiple":if (field.name.length) {for (j = 0, optLen = field.options.length; j < optLen; j++) {option = field.options[j];if (option.selected) {optValue = "";if (option.hasAttribute) {optValue = (option.hasAttribute("value") ? option.value : option.text);} else {optValue = (option.attributes["value"].specified ? option.value : option.text);}parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(optValue));}}}break;case undefined: //fieldsetcase "file": //file inputcase "submit": //submit buttoncase "reset": //reset buttoncase "button": //custom buttonbreak;case "radio": //radio buttoncase "checkbox": //checkboxif (!field.checked) {break;}/* falls through */default://don't include form fields without namesif (field.name.length) {parts.push(encodeURIComponent(field.name) + "=" + encodeURIComponent(field.value));}}}return parts.join("&");
}
复制代码

列子:

 <form id="formData"><div class="pop-info"><label for="ordersaleCode">订单编号:</label><input type="text" id="ordersaleCode" name="ordersaleCode" placeholder="请输入订单编号" /></div><div class="pop-info"><label for="extractType">配送方式:</label><select id="extractType" name="extractType" class="mySelect"><option value="0" selected>配送</option><option value="1">自提</option></select></div></form><button>获取参数</button>
复制代码
 document.querySelector("button").onclick = function () {console.log('param: '+serialize(document.getElementById("formData"))); // param: ordersaleCode=&extractType=0}
复制代码

这里推荐一下我的前端学习交流群:784783012,里面都是学习前端的,如果你想制作酷炫的网页,想学习编程。自己整理了一份2018最全面前端学习资料,从最基础的HTML+CSS+JS【炫酷特效,游戏,插件封装,设计模式】到移动端HTML5的项目实战的学习资料都有整理,送给每一位前端小伙伴,有想学习web前端的,或是转行,或是大学生,还有工作中想提升自己能力的,正在学习的小伙伴欢迎加入学习。

转载于:https://juejin.im/post/5bcacc12f265da0ab915fd02

JavaScript—获取参数(23)相关推荐

  1. javascript获取网页URL地址及参数等

    2019独角兽企业重金招聘Python工程师标准>>> 用javascript获取url网址信息 Java代码 <script type="text/javascri ...

  2. JavaScript获取地址栏中的链接参数

    2019独角兽企业重金招聘Python工程师标准>>> JavaScript获取地址栏中的链接参数 <script type="text/javascript&quo ...

  3. JavaScript获取Url地址中的指定参数

    JavaScript获取Url地址中的指定参数 var url = "https://codemank23.com?username=kkk&scope=1";if (ur ...

  4. html获取url参数 php,如何使用JavaScript获取URL参数

    如果你希望通过JavaScript获取和使用URL参数.在JavaScript中,可以使用"document.location.search"获取URL的参数.但是,由于你只能在U ...

  5. Javascript获取URL地址的参数

    什么是URL地址的参数 在网页访问的时候,我们会通过url地址来传递参数. 例如,url地址类似: http://www.pingbuwang.com/index.html?a=12&b=he ...

  6. Javascript获取页面、屏幕尺寸大小参数

    Javascript获取获取屏幕.浏览器窗口 ,浏览器,网页高度.宽度的大小 网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clien ...

  7. [Flex][总结]从页面url获取参数

    关于flex如何向某个页面传递参数,我以前有这方面的笔记,flex通过非AmfPHP途径与后台交互中URLLoader+URLRequest+URLVariables方法也可以用于向flex页面传参数 ...

  8. [轉]JavaScript获取HTML DOM父,子,临近节点

    在Web应用程序特别是Web2.0程序开发中,经常要获取页面中某个元素,然后更新该元素的样式.内容等.如何获取要更新的元素,是首先要解决的问题.令人欣慰的是,使用JavaScript获取节点的方法有很 ...

  9. JavaScript 函数参数

    JavaScript 函数参数 JavaScript 函数对参数的值没有进行任何的检查. 函数显式参数(Parameters)与隐式参数(Arguments) functionName(paramet ...

最新文章

  1. 关于Arrays类总结
  2. css样式教程---css控制背景图片-背景相关的css
  3. vs中没有fstream_vs++2010 编译说找不到 fstream.h 解决方法
  4. 《淘宝店铺 大数据营销+SEO+爆款打造 一册通》一一2.2 实时直播抢占生意先机...
  5. CSDN博客 专用备份工具
  6. 报错:failed to get the task for process XXX(解决方案)
  7. telnet命令发送邮件
  8. python中的替换函数_python:替换模块类中的函数
  9. linux下重装mysql_Linux下安装mysql
  10. Material使用05 MdListModule模块 MdButtonToggleModule模块
  11. android最新图表框架,Android中绘制图表的开源框架AChartEngine初识
  12. 什么是网络基础设施?
  13. 三星笔记本BIOS文件提取 三星笔记本BIOS降级
  14. ug无限的服务器名称,ug无效的服务器名称
  15. win7计算机远程桌面连接,Win 7连向Win7系统远程桌面连接设置
  16. 猴子偷桃c语言编程软件,C语言实现的猴子偷桃之类算法
  17. 怎么样可以在阿里云搭建个人网站及域名绑定介绍
  18. 计算机组成fc fz是什么,计算机组成原理实验二
  19. esp8266保存html文件,八,ESP8266 文件保存数据(示例代码)
  20. 阿里云ECS问题大全【转自阿里云社区】

热门文章

  1. 一条命令关掉centos所有不必要的服务和端口号
  2. Docker实践 -- 安装Docker
  3. MongoDB文档查询操作(三)
  4. IDC:无线数字化转型持续进行 第二季度全球企业WLAN市场强劲增长
  5. 唠唠 RDS 那些事 —— RDS on Windows Server 2016 第二篇
  6. pycharm运行scrapy
  7. 再学C++ Primer(9)-类
  8. ARP的***与防护
  9. VS2005项目的安装与布署,包括卸载
  10. iofactory.php,CI框架下引入类库资源PHPPowerPoint报出“ Cannot redeclare class IOFactory”...