2011-11-29 43 views
0
<script> 
    var counter = 0; 
    //Loads all the elements and assigns event handlers 
    function load() 
    { 
     //create and append prev button 

     loadPeople(counter); 

     var btnNext = document.createElement("div"); 
     btnNext.setAttribute("class", "button"); 
     btnNext.setAttribute("id", "n"); 
     btnNext.innerHTML = "Next" 
     root.appendChild(btnNext); 

    } 

    function loadPeople(index) 
    { 
     //This creates and appends several boxes with photos to represent various people 
    } 

    function addListeners() 
    { 
     //Add listeners 
     //Previous 

     //Next 
     var eventNextClick = document.getElementById("n"); 
     eventNextClick.addEventListener("onclick", next, true); 
    } 

    //This should fire when next button is clicked 
    function next() 
    { 
     alert("This works"); 
    } 

    document.addEventListener("DOMContentLoaded", load, false) 
    addListeners(); 

</script> 

基本上...我的代码会生成两个按钮prev和next,以及几个显示图像的框。忽略这些框,现在,我只是想让点击事件起作用。我的JS代码与addEventHandler/click不起作用?

此代码似乎无法产生任何可点击的内容。不知道我的问题在哪里。请解释你的答案。谢谢!

回答

0
eventNextClick.addEventListener("onclick", next, true); 

onclick应该只是click

请记住,在< IE9中,当使用attachEvent()时使用on前缀。

0

eventNextClick.addEventListener("onclick", next, true);

您需要使用"click""onclick"

你可能还需要设置第三个参数为false,因为在默认情况下要使用冒泡。

document.addEventListener("DOMContentLoaded", load, false) 
addListeners(); 

您还在绑定DOM就绪事件后直接添加侦听器。这不会工作。您需要等到load已经解雇,直到按钮已经生成调用addListeners

function load() 
{ 
    // snip 

    // invoke add listeners here instead 
    addListeners(); 
} 
+0

之前,我已经改正了我的代码,仍然没有效果。前两个我知道的问题,只是在我发布代码时忘了更改它们。后者,我现在在我的负载中调用addListeners ...仍然没有效果 –