JS传参技巧总结

news/2024/7/19 15:36:47 标签: JS

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")

特点:

1、localStorage 是持久存储,不主动删除 一直存在 sessionStorage 是临时存储,关闭浏览器数据就没了

2、localStorage 可以多窗口共享 sessionStorage 不能多窗口共享数据

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;

}

正则表达式方法

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" "alert(id)">test1</button>
 
<!--高级-->
<button id="test" name="123" yue="xiaoyueyue" friend="heizi" "console.log(this.getAttribute('yue'),th

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' 'alertInfo(this)'>点击</button>";
document.body.appendChild(box);

// name,age,friend
function alertInfo(val) {
  console.log(val);
  alert('大家好,我是' + val.dataset.name + ', 我今年' + val.dataset.age + '岁了,我的好朋友是' + val.dataset.friend + ' !')

}

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 "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';

var params = "&quot;" + name + "&quot;,&quot;" + age + "&quot;,&quot;" + home + "&quot;,&quot;" + friend + "&quot;";
var box = document.createElement("div");
box.innerHTML = "<button 'alertInfo(" + params + ")'>点击</button>";
document.body.appendChild(box);


// name, age,home,friend
function alertInfo(name, age, home, friend) {
  alert("我是" + name + ',' + "我今年" + age + "岁了!")
}

复杂传参

var data = [
  {
    "name": "xiaoyueyue",
    "age": "25",
    "home": "shanxi",
    "friend": "heizi"
  }

]

var box = document.createElement("div");

for (var i = 0; i < data.length; i++) {
  box.innerHTML = "<button id='btn'  'alertInfo(id,\"" + data[i].name + "\",\"" + data[i].age + "\",\"" + data[i].home + "\",\"" + data[i].friend + "\")'>点击</button>";
}

document.body.appendChild(box);

function alertInfo(id, name, age, home, friend) {
  alert("我是" + name + "," + friend + "是我的好朋友")
}

8.arguments

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

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

}

最后

为了帮助大家让学习变得轻松、高效,给大家免费分享一大批资料,帮助大家在成为全栈工程师,乃至架构师的路上披荆斩棘。在这里给大家推荐一个前端全栈学习交流圈:866109386.欢迎大家进群交流讨论,学习交流,共同进步。

当真正开始学习的时候难免不知道从哪入手,导致效率低下影响继续学习的信心。

但最重要的是不知道哪些技术需要重点掌握,学习时频繁踩坑,最终浪费大量时间,所以有有效资源还是很有必要的。

最后祝福所有遇到瓶疾且不知道怎么办的前端程序员们,祝福大家在往后的工作与面试中一切顺利。


http://www.niftyadmin.cn/n/1300748.html

相关文章

javascript引擎工作原理

1. 什么是JavaScript解析引擎&#xff1f; 简单地说&#xff0c;JavaScript解析引擎就是能够“读懂”JavaScript代码&#xff0c;并准确地给出代码运行结果的一段程序。比方说&#xff0c;当你写了 var a 1 1; 这样一段代码&#xff0c;JavaScript引擎做的事情就是看懂&…

VUE—数据响应原理真的是双向绑定吗?

很多朋友在理解 Vue 的时候都把 Vue 的数据响应原理理解为双向绑定&#xff0c;但实际上这是不准确的&#xff0c;我们之前提到的数据响应&#xff0c;都是通过数据的改变去驱动 DOM 视图的变化&#xff0c;而双向绑定除了数据驱动 DOM 外&#xff0c; DOM 的变化反过来影响数据…

Vue渲染过程浅析

Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML。但是模板毕竟是模板&#xff0c;不是真实的dom节点。从模板到真实dom节点还需要经过一些步骤 把模板编译为render函数实例进行挂载, 根据根节点render函数的调用&#xff0c;递归的生成虚拟dom对比虚拟dom&#xff0c…

vue基础之v-bind属性、class和style用法分析

一、属性 属性: v-bind:src"" width/height/title… 简写: :src"" 推荐 效果能出来&#xff0c;但是会报一个404错误 效果可以出来&#xff0c;不会发404请求 window.onloadfunction(){new Vue({el:#box,data:{url:https://www.baidu.com/img/bd_log…

如何优化我们的代码(vue项目)

前言 作为一个前端&#xff0c;可能绝大多数的时间都是在写的业务代码&#xff0c;时间一长&#xff0c;大家会觉得乏味、没意思等等&#xff0c;但是其实就算只是写业务代码&#xff0c;我们也依然能够找到有兴趣的点&#xff0c;说的简单一点就是代码优化&#xff0c;不仅仅…

你不知道的浏览器渲染原理

前言 浏览器的内核是指支持浏览器运行的最核心的程序&#xff0c;分为两个部分的&#xff0c;一是渲染引擎&#xff0c;另一个是 JS 引擎。渲染引擎在不同的浏览器中也不是都相同的。目前市面上常见的浏览器内核可以分为这四种&#xff1a;Trident&#xff08;IE&#xff09;、…

用 Node.js 写一个多人游戏服务器引擎

英文原文&#xff1a;https://www.smashingmagazine.com/2018/12/multiplayer-text-adventure-engine-node-js/ 摘要 听说过文字冒险游戏吗&#xff1f; 如果你的年龄足够大的话&#xff08;就像我一样&#xff09;&#xff0c;那么你可能听说过、甚至玩过“back in the day”…

vue基础之事件简写、事件对象、冒泡、默认行为、键盘事件实例分析

v-on:click/mouseover......简写的:click"" 推荐事件对象:click"show($event)"事件冒泡:阻止冒泡: a). ev.cancelBubbletrue;b). click.stop 推荐默认行为(默认事件):阻止默认行为:a). ev.preventDefault();b). contextmenu.prevent 推荐键盘…