純粋なjavascriptでクラス名ですべての要素を取得するには? Jqueryのアナログ$( '。class')?クラス名ですべての要素を取得する方法は?
答えて
document.getElementsByClassName(klass)
いくつかのエンジン(特に古いブラウザ)がそれを持っていないことに注意してください。シムの使用を検討することもできます。それは遅くなり、文書全体を反復するが、うまくいく。
some browsersには、document.getElementsByClassName(class)
という機能があります。それ以外の場合は、必要なクラス名を持っていることを条件として、ドキュメント内のすべての要素を繰り返しチェックするだけです。
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
}
}
をしようと動作しない場合は、これは動作するはずです、このようなあなたのクラス名を構築することができます。
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;
}
はい、私はそれを使用することを示唆していませんこのように、私はこのようなことをしようとしました。そして、非常に遅いので、IE7で大きなパフォーマンスの問題が発生しました。 –
私は同意します。確かにより洗練されたソリューションがあります。私は以下の@Kunalがクリーナーである正規表現を使用しているのを見ています。私はすぐにオプションを提供していたので、リクエスタがアイデアを得ることができました。 – spinon
要素に2つのクラスが適用されている場合、これは機能しません –
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)
}
これは、サイトポイントブックのコードスニペットに似ています。それがソースかどうかだけ、またはちょっと変わった偶然でしょうか? – pqsk
いくつかの技法が説明さとスピードテスト済み:http://ejohn.org/blog/getelementsbyclassname-speed-comparison/
シンプルで簡単な方法
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';
}
先に進むと、要素がループ内で削除されると、ループは2番目のエントリをすべてスキップします。だから、後ろに行くほうがいい。 (私はそれに応じて、ピアレビューを検討中です)。 –
http://stackoverflow.com/questions/1933602/how-to-getelementbyclass-instead-of-getelementbyid-with-javascript – silly