2012-02-24 11 views

答えて

46

document.getElementsByClassName(klass)

いくつかのエンジン(特に古いブラウザ)がそれを持っていないことに注意してください。シムの使用を検討することもできます。それは遅くなり、文書全体を反復するが、うまくいく。

1

some browsersには、document.getElementsByClassName(class)という機能があります。それ以外の場合は、必要なクラス名を持っていることを条件として、ドキュメント内のすべての要素を繰り返しチェックするだけです。

15
document.getElementsByClassName('your class'); 

またはそれがこの

if (!document.getElementsByClassName) { 
    document.getElementsByClassName=function(cn) { 
     var allT=document.getElementsByTagName('*'), allCN=[], i=0, a; 
     while(a=allT[i++]) { 
      a.className==cn ? allCN[allCN.length]=a : null; 
     } 
     return allCN 
    } 
} 
1

をしようと動作しない場合は、これは動作するはずです、このようなあなたのクラス名を構築することができます。

function(className) 
{ 
    var matchingItems = []; 
    var allElements = document.getElementsByTagName("*"); 

    for(var i=0; i < allElements.length; i++) 
    { 
     if(allElements [i].className == className) 
     { 
      matchingItems.push(allElements[i]); 
     } 
    } 

    return matchingItems; 
} 
+0

はい、私はそれを使用することを示唆していませんこのように、私はこのようなことをしようとしました。そして、非常に遅いので、IE7で大きなパフォーマンスの問題が発生しました。 –

+0

私は同意します。確かにより洗練されたソリューションがあります。私は以下の@Kunalがクリーナーである正規表現を使用しているのを見ています。私はすぐにオプションを提供していたので、リクエスタがアイデアを得ることができました。 – spinon

+1

要素に2つのクラスが適用されている場合、これは機能しません –

0
 

function getElementsByClassName(oElm, strTagName, strClassName){ 
    var arrElements = (strTagName == "*" && oElm.all)? oElm.all : 
     oElm.getElementsByTagName(strTagName); 
    var arrReturnElements = new Array(); 
    strClassName = strClassName.replace(/\-/g, "\\-"); 
    var oRegExp = new RegExp("(^|\\s)" + strClassName + "(\\s|$)"); 
    var oElement; 
    for(var i=0; i<arrElements.length; i++){ 
     oElement = arrElements[i];  
     if(oRegExp.test(oElement.className)){ 
      arrReturnElements.push(oElement); 
     } 
    } 
    return (arrReturnElements) 
} 

 
+0

これは、サイトポイントブックのコードスニペットに似ています。それがソースかどうかだけ、またはちょっと変わった偶然でしょうか? – pqsk

34

シンプルで簡単な方法

var cusid_ele = document.getElementsByClassName('custid'); 
for (var i = 0; i < cusid_ele.length; ++i) { 
    var item = cusid_ele[i]; 
    item.innerHTML = 'this is value'; 
} 
+0

先に進むと、要素がループ内で削除されると、ループは2番目のエントリをすべてスキップします。だから、後ろに行くほうがいい。 (私はそれに応じて、ピアレビューを検討中です)。 –