2013-02-02 94 views
1
頁面

可能重複上:
Why does jQuery or a DOM method such as `getElementById` not find the element?事件偵聽器工作在的jsfiddle但不

此事件偵聽器的工作原理上的jsfiddle,但不是當我把它從我的PHP頁面。

function addDice() { 
var add = document.getElementById("add"); 
alert("test");  
} 

var el = document.getElementById("add"); 
el.addEventListener("click", addDice, false); 

    <li id="add">CAll ADD</li> 

我有劇本在<Script>標籤之間我的索引頁,如果我在<li>標記它的工作原理把一個onclick="addDice",但不與eventListener

+6

也許你有從jsFiddle的'Framework'字段中選擇'onLoad',但是你的頁面在它存在之前嘗試訪問'#add'。 – Teemu

+0

這就是我首先想到的,但是如何在不調用函數的情況下獲得body的onload? – Dymond

+0

這裏有一個簡單的例子 - 通過一個單獨的元素切換一個元素的類:http://jsfiddle.net/UaT3P/115/ –

回答

3

試試這個:

window.onload = function() { 
    function addDice() { 
     var add = document.getElementById("add"); 
     alert("test");  
    } 
    var el = document.getElementById("add"); 
    el.addEventListener("click", addDice, false); 
} 
+0

還有魔法。 現在拉了我一下頭髮。非常感謝你!。 – Dymond

+0

過去五年你一直在使用IE5怪癖模式? :-S –

+0

@MarcelKorpel Me?是的,我正在爲公司工作的公司內部網絡。其實它似乎我必須更新我的個人資料。一個新的工作,沒有更多的IE怪癖,現在我可以自由使用IE8:)。 – Teemu

2

你的代碼運行#將用於在這之前沒有工作,你可以解決它像這樣

window.onload=function(){ 
     var el = document.getElementById("add"); 
     el.addEventListener("click", addDice, false); 
} 

或JQuery的

jQuery(document).ready(function() { 
     var el = document.getElementById("add"); 
     el.addEventListener("click", addDice, false); 

}) ; 
相關問題