2013-02-02 79 views
1

我一直在閱讀關於getElmentByClassName,但我似乎無法讓它在任何瀏覽器中工作, 函數我工作時,o調用ID名稱,但我想能夠調用類名。如何使getElementsByClassName工作

有什麼辦法不包括jquery嗎?

這就是我所擁有的,會有一些幫助。 謝謝。

<ul><li><button class="testButton">Test button</button></li></ul> 

function OnButtonDown (button) { 
alert("The class work") 
} 

function Init() { 
    var className = "testButton"; 
    var button = document.getElementsByClassName(className); 
    if (button.addEventListener) { // all browsers except IE before version 9 
     button.addEventListener ("mousedown", function() { 
      OnButtonDown (button) 
      }, false); 
     button.addEventListener ("mouseup", function() { 
      OnButtonUp (button) 
      }, false); 
    } 
    else { 
     if (button.attachEvent) { // IE before version 9 
      button.attachEvent ("onmousedown", function() { 
       OnButtonDown (button) 
       }); 
      button.attachEvent ("onmouseup", function() { 
       OnButtonUp (button) 
       }); 
     } 
    } 
} 
+1

調試提示:'的console.log(按鈕);' – JJJ

+2

@linski他應該如何從網站的一段代碼中做出一個簡短的「可編譯」範例...?他已經發布了足夠的代碼來明確他的問題以及如何解決問題。如果你不知道答案,那麼你不明白這個問題。 – fonZ

回答

3

getElementsByClassName()返回HTML元素的集合,你需要訪問使用其指數的集合的元素:

button = document.getElementsByClassName(className)[0]; 
// your code here 

如果你只有一個元素,請考慮使用.getElementById()

+1

它是getElementsByClassName,而不是getElementByClassName。我不能建議編輯,因爲它只有一個字符:) –

+0

感謝:P它是我的習慣使用'.getElementById()' – micnic

+0

什麼!我不知道它會返回HTML元素的集合。 好吧,現在它的作品!真的非常感謝你! – Dymond

1

@micnic說什麼。

僅供參考。在這種document.getElementById()爲您做不工作,這裏的情況是,你將如何處理它:

var button = false; 
var buttons = document.getElementsByClassName(className); 
for (var i=0; i<buttons.length; i++) { 
    button = buttons[i]; 
    // do stuff with button 
} 

演示在這裏:http://jsfiddle.net/3pAeM/

+0

這個功能其實更簡單了,我沒有必要使用索引:) 謝謝 – Dymond

相關問題