我正在使用javaScript创建一个Web应用程序,在一个部分中,动态生成一个列表。我想让每个列表项都可以点击并执行一个函数。
无论如何,我注意到该功能在页面加载时自动执行,即使没有点击也是如此,当我稍后点击它时,没有任何反应。
以下是代码:
window.onload=function loadData(){
var goalsStr = localStorage.getItem("goalsNames");
var goalsObj = JSON.parse(goalsStr);
if (goalsObj !== null)
for(var i=0; i<goalsObj.length; i++){
var node = document.createElement("LI");
node.setAttribute("draggable", "true");
node.setAttribute("id","i");
var textnode = document.createTextNode(goalsObj[i]);
node.appendChild(textnode);
node.addEventListener('click', viewGoal(goalsObj[i]), false);
document.getElementById("sortable").appendChild(node);
}
}
function viewGoal(goal){
alert("this should not happen");
}
我甚至尝试过使用.setAttribute('onclick',方法,但这也没有用。有什么问题?我该怎么办?
答案 0 :(得分:5)
当你添加事件监听器时,你需要传入一个函数,意思是,不要包含()
- 否则它会立即执行!
node.addEventListener('click', function() {
viewGoal(goalsObj[i])
}, false);