js解决动态绑定事件时不能传参的问题
在写东西的时候会遇到这样的问题,想为事件绑定一个函数
有人想这样写: (假如我现在想为div加入一个点击事件)
var div = document.getElementsByTagName("div")[0];
div.onclick = fun();
function fun() {
console.log("click!");
}
这个栗子是错误的
在页面加载的时没有等开始点击直接就会执行 fun()函数,而且之后点击将不会再执行。
正确绑定的方法:
var div = document.getElementsByTagName("div")[0];
div.onclick = move;
function move() {
console.log("jiayou");
}
也就是直接将方法名赋值给点击事件
那如果绑定的函数要传参呢???
我们还有方法:
var div = document.getElementsByTagName("div")[0];
div.onclick = function(){ move() };
function move(a) {
console.log(a);
}
在点击事件后面定义一个函数方法,在该方法里面执行我们要执行的方法,并传入参数。
- 有一点需要注意:
临时定义的这个函数中 this指的是div对象, 所以我们想传入div对象时使用 this就可以了
js跳转到新页面传参以及接收参数的方法
1.传递参数:
window.location.href = "./list.html?id="+id;
1.接收参数:
(1)接收参数函数封装
function GetRequest() {
var url = location.search; //获取url中"?"符后的字串 包括"?"
var theRequest = new Object();
if (url.indexOf("?") != -1) { //如果要检索的字符串值没有出现,则该方法返回 -1。
var str = url.substr(1); //substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
strs = str.split("&");
for (var i = 0; i < strs.length; i++) {
theRequest[strs[i].split("=")[0]] = decodeURIComponent(strs[i].split("=")[1]);
}
}
return theRequest;
}
(1)调用
var a=GetRequest();
var index_1=a['id'];