2013-02-02 5 views
1

Je lisais à propos de getElmentByClassName mais je ne peux pas sembler le faire fonctionner dans un navigateur, La fonction que j'ai fonctionne quand appeler le nom d'ID, mais je voudrais être en mesure d'appeler le nom de classe.comment faire getElementsByClassName travail

Existe-t-il un moyen d'exclure Jquery?

C'est ce que j'ai, serait génial avec un peu d'aide. merci.

<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

pointe Debugging: 'console.log (bouton);' – JJJ

+2

@linski comment est-il censé faire un petit exemple "compilable" à partir d'un morceau de code d'un site web ...? Il a déjà posté assez de code pour faire clairement comprendre son problème et comment le résoudre. Si vous ne connaissez pas la réponse, alors vous ne comprenez pas la question. – fonZ

Répondre

3

getElementsByClassName() retourne une collection d'éléments HTML, vous devez accéder aux éléments de la collection en utilisant leur index:

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

Si vous avez un seul élément, s'il vous plaît envisager d'utiliser .getElementById().

+1

Il s'agit de getElementsByClassName et non de getElementByClassName. Je ne peux pas suggérer modifier parce que c'est seulement un char :) –

+0

merci: P c'est mon habbit d'utiliser '.getElementById()' – micnic

+0

quoi quoi! Je ne savais pas qu'il retourne la collection d'éléments HTML. Eh bien maintenant son travail! merci vraiment beaucoup! – Dymond

1

Ce que @micnic a dit.

FYI. Dans le cas où document.getElementById()ne le fait pas travail pour vous, voici comment vous gérer:

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

Demo ici: http://jsfiddle.net/3pAeM/

+0

Cette fonction était en fait plus facile que je n'ai pas eu à utiliser l'index :) Merci – Dymond

Questions connexes