Javascript 传递一个对象';onclick函数的s键
我试图创建一个无序的列表菜单,但无法让onclick调用正确的函数。如何通过onclick函数传递对象的键Javascript 传递一个对象';onclick函数的s键,javascript,Javascript,我试图创建一个无序的列表菜单,但无法让onclick调用正确的函数。如何通过onclick函数传递对象的键 function ulMenu(menuList) { for (var keys in menuList) { var li = document.createElement("li"); var textNode = document.createTextNode(keys); li.appendChild(textNode)
function ulMenu(menuList) {
for (var keys in menuList) {
var li = document.createElement("li");
var textNode = document.createTextNode(keys);
li.appendChild(textNode);
li.onclick = function() { ?keys? };
ul.appendChild(li);
}
var element = document.getElementsByTagName("body")[0];
element.appendChild(ul);
}
window.onload = function() {
ulMenu({Register: Register,"Sign In": Login});
}
function Login() {
alert("Login Function");
}
function Register() {
alert("Register Function");
}
您需要阅读,但以下是答案:
li.onclick = (function (keys) {
return function () {
//handler code
console.log(keys);
};
})(keys);
更有效的方法是在循环之外创建一个函数,负责生成处理程序
function createClickHandler(keys) {
return function () {
//use keys
};
}
然后在循环中:
li.onclick = createClickHandler(keys);
无需查询
body
,您可以执行document.body.appendChild()
。我自学了很长一段时间,从来没有想到过,代码要短得多。@RobertPeek您看过我的答案了吗?