how to return two functions for onclick event
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
How do I pass the value (not the reference) of a JS variable to a function?
我有几个链接(var a [])和onclick事件。 到目前为止,通过使用一个函数,这很好用:
1 2 3 4 5 6 7 8 9 10 | function setCurrentImage(x) { return function() { alert("Image:"+x); return false; } } for(var i = 0; i < a.length; i++) { a[i].onclick = setCurrentImage(i); } |
问题是,我需要两个功能。 而这段代码不起作用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function setCurrentImage(x) { return function() { alert("Image:"+x); } } function setCurrentNote(x) { return function() { alert("Note:"+x); } } for(var i = 0; i < a.length; i++) { a[i].onclick = function() { setCurrentImage(i); setCurrentNote(i); return false; } } |
这段代码有什么问题? 提前致谢 :)
您调用的每个函数都返回一个函数,但实际上并没有执行任何操作。
你永远不会调用他们返回的函数。
一旦你解决了这个问题,你就会遇到另一个问题; 所有内联处理程序共享相同的
你需要把它包装在IIFE中。
扩展SLaks的答案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | function setCurrentImage(x) { alert("Image:"+x); } function setCurrentNote(x) { alert("Note:"+x); } function setOnclickHandler(x) { return function() { setCurrentImage(x); setCurrentNote(x); return false; }; } for(var i = 0; i < a.length; i++) { a[i].onclick = setOnclickHandler(x); } |