在javascript中将参数传递给onclick actionlistener函数
我在谷歌和stackoverflow上搜索了又搜索,如果我错了,请重定向我,但没有任何东西能直接说明我在寻找什么 我列出了三个项目,我想为每个项目创建一个动作监听器(onclick),它调用一个函数来在javascript中将参数传递给onclick actionlistener函数,javascript,jquery,onclick,click,parameter-passing,Javascript,Jquery,Onclick,Click,Parameter Passing,我在谷歌和stackoverflow上搜索了又搜索,如果我错了,请重定向我,但没有任何东西能直接说明我在寻找什么 我列出了三个项目,我想为每个项目创建一个动作监听器(onclick),它调用一个函数来window.open(myURL,'.\u blank'),然后转到该URL function goToURL (at) { window.open(myURL[at], '_blank'); }; for (var i = 0; i < docume
window.open(myURL,'.\u blank')
,然后转到该URL
function goToURL (at) {
window.open(myURL[at], '_blank');
};
for (var i = 0; i < document.getElementsByTagName("li").length; i++) {
document.getElementsByTagName("li")[i].onclick = goToURL(i);
}
函数gotour(at){
window.open(myURL[at],'u blank');
};
对于(var i=0;i
现在,它不仅忽略了onclick,而且一次打开了所有URL。
我查看了文档,它只调用了函数名no()
。但即使没有参数,它也不起作用。所以,如果我不能传递参数,我就无法分配不同的URL。
我知道可能有另一种方法可以做到这一点,但只要传递一个参数,我就应该能够找到它
提前谢谢 您必须为单击
onclick
指定一个函数。您将立即调用该函数并为其指定返回值。如果不必向函数传递参数,可以执行以下操作:
document.getElementsByTagName("li")[i].onclick = goToURL;
请注意,函数名后面没有()
。我们不是在调用函数,我们只是指函数本身
如果您想要传递一个依赖于循环变量的参数,那么您必须知道
最终,您可以执行以下操作:
document.getElementsByTagName("li")[i].onclick = (function(i) {
return function() {
goToURL(i);
};
}(i));
由于您使用jQuery标记了问题,因此可以将其简化为:
$('li').each(function(i) {
$(this).data('url', myURL[i]);
}).click(function() {
window.open($(this).data('url'), '_blank');
});
甚至连我的第一句话都没打出来…:\