2011-12-16 8 views
12

getElementById("ClassName").innerHTMLの同等物にgetElementByClassName("classname").innerHTML関数などがあるかどうかを知りたいと思っています。クラス名で要素を取得する方法

+0

これはあなたに役立つでしょう。 http://javascript.about.com/library/bldom08.htm しかし、クイックヒント - >それにはJqueryを使用してください。それは簡単になるだろう。 – Fredy31

+1

[JavaScriptでクラスで要素を取得する方法]の複製が可能ですか?(http://stackoverflow.com/questions/3808808/how-to-get-element-by-class-in-javascript) - 私はあなたが対処していると仮定しますJavaScriptを使って –

答えて

25

関数名にsがありません。あなたはポリフィルを見つけるか、querySelectorAll(IE8)を使用する必要がありますので、getElementsByClassNameをサポートしていません以下

var elements = document.getElementsByClassName("classname"); 

for (var i = 0; i < elements.length; i++) { 
    elements[i].innerHTML = 'foo'; 
} 

IE8と:getElementsByTagNameあなたが反復処理する必要がある要素の要素、のコレクションを返します。

+3

IE8以降では、 'getElementsByClassName'は利用できません。 –

0

あなたはTOUはjQueryのを使用している場合は、そのCSSセレクタと同じように、あなたはそれを得ることができ、この使用してjQueryのに

$('.className').html(); 

http://api.jquery.com/html/

+0

こんにちは、この回答はjsのclass要素の使い方に答えるのに役立ちました。上記の質問に関連するものではないかもしれませんが、それは私が持っていた水平スクロールの問題を理解するのに役立ちました。 – DoodleKana

-2

を行うことができます。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script> 

、その後...

$('.classname').each(function() { 
    // get html 
    $(this).html(); 
    // set html 
    $(this).html('something'); 
}); 

innerHTMLを管理する便利な方法もあります。

+0

これは、このクラスの最初の要素に対してのみHTMLを提供します。実際には多くの人がいる可能性がありますので、おそらくあなたは 'each()'やそれに類するものをすべて処理する必要があります。 – ivantod

+0

編集後でもまだ良くありません...正しい方法でBlenderの答えを確認してください。 – ivantod

+0

これで動作するはずです...効果的には、Blenderの回答よりも多くの情報を追加することはありませんが、ありがとうございます。 –

0

私はあなたが与えられたクラスのすべての要素を見つけるために、直接(.yourclassのような)CSSセレクタを使用することができるjQueryのを、使用することをお勧め:

$('.yourclass').doWhatYouWant(); 

あなたはjQueryのを使用しない場合は、あなたが使用することができますプレーンJavascript:

document.getElementsByClassName('my-fancy-class') 

ただし、IE8の非互換性の問題に注意してください。あなたが使用できる別の方法として (遅いが、あなたは、より複雑なCSSセレクタを構築することができます):

あなたのCSSのセレクタに対応し 一つの要素を返すか、返されます

document.querySelectorAll('.cssSelector') 

ます

document.querySelector('.cssSelector') 

代わりに複数の要素。

関連する問題