2012-01-18 20 views
1

クラス名のないspan要素からテキストを抽出したいとします。どのようにそれを行うことができますか? 特定のクラス名を持つ要素は検索できますが、クラス名のない要素のみを取得する方法はありますか?javascriptでクラス名のない要素を取得する方法

<span>0m2abBrL+RIHOEA+dZS+OqV3St+nJ/</span> 
<wbr></wbr> 
<span class="word_break"></span> 
<span>zwq73Gfz8MQGB0yS++lfufSOV133huE</span> 
<wbr></wbr> 
<span class="word_break"></span> 
vCB0s5D9w 
<span class="text_exposed_hide">...</span> 
+0

純粋なjavascriptまたはjqueryでこれをオプションにしたいですか? –

+0

純粋なjavascriptでしたい – vaichidrewar

+0

こんにちは、私はまた、Javaスクリプトでコードを追加しました –

答えて

3

これらを繰り返し、私が想定しているクラス名を確認してください。

var spans = document.getElementsByTagName('span'); 
for (var i = 0; i < spans.length; i++) { 
    if (spans[i].className == '') { 
     //span doesn't have a class 
    } 
} 
+1

最新のブラウザでサポートされているように 'querySelectorAll'フォークを持つのに適しています。 – RobG

0

私はそれを見つける方法を迷惑にもかかわらず(mrtshermanが本当答えをパンチに私を打つため)、私はjQueryの答えを与えるでしょう:

$('span:not([class])') 
+0

投稿にjQueryタグがなく、回答前にOPのコメントがあり、普通のjavascriptがほしいと答えています。 – jfriend00

+0

申し訳ございません。コメントを見ませんでした。 – cegfault

+0

OPがjQueryを要求しない場合、jQueryを明示的に言及するか、jQueryでタグ付けされているかのいずれかで、jQueryの回答を控えてください。 – jfriend00

-1

私の友人のdownvoteした後、私はここでコアJavaスクリプトのコードを追加しました:

また、これはjQueryを使って行うことができます
<html> 
<head> 
<style> 
span{display:block;} 
</style> 
<script type="text/javascript"> 
function getElementsByNoClassName() { 
      var node = document.getElementsByTagName("span"); 
      console.log(node.length); 
      var a = [];   
      for (var i = 0, j = node.length; i < j; i++){ 
        if (node[i].className=='') 
        node[i].setAttribute("style","color:red;");    
        } 
} 

window.onload=getElementsByNoClassName; 
</script> 
</head> 
<body> 
Content with No class is colored in red. 
<span>0m2abBrL+RIHOEA+dZS+OqV3St+nJ/</span> 
<wbr></wbr> 
<span class="word_break"></span> 
<span>zwq73Gfz8MQGB0yS++lfufSOV133huE</span> 
<wbr></wbr> 
<span class="word_break"></span> 
vCB0s5D9w 
<span class="text_exposed_hide">...</span> 
</body> 
</html> 

<html> 
<head> 
<style> 
span{display:block;} 
</style> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 

$("span").filter(
     function(){ 
     return $(this).attr('class')==undefined 
     }).css('color','red'); 
}); 
</script> 
</head> 
<body> 
Content with No class is colored in red. 
<span>0m2abBrL+RIHOEA+dZS+OqV3St+nJ/</span> 
<wbr></wbr> 
<span class="word_break"></span> 
<span>zwq73Gfz8MQGB0yS++lfufSOV133huE</span> 
<wbr></wbr> 
<span class="word_break"></span> 
vCB0s5D9w 
<span class="text_exposed_hide">...</span> 
</body> 
</html> 
+0

投稿にjQueryタグがなく、回答前にOPのコメントがあり、普通のjavascriptが必要だと言われています。 – jfriend00

+0

ありがとう、私もJavaスクリプトでコードを追加:) –

+0

あなたのプレーンなjavascriptのバージョンは、OPが尋ねたものをしません。 – jfriend00

1

より多くの最適化を行うことができる..しかし、これはあなたがこれを行うことができますどのように..ですElement.querySelectorAll

function getElementsByNoClassName() { 
      var node = document.getElementsByTagName("body")[0]; 
      var a = []; 
      var els = node.getElementsByTagName("*"); 
      for (var i = 0, j = els.length; i < j; i++) 
       if (els[i].className=='') a.push(els[i]); 
      return a; 
     } 
0

、あなたはそれを達成するために、次のコードを使用することができます。

document.getElementsByTagName('span').querySelectorAll('span:not([class])'); 
関連する問題