2012-01-18 77 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可以是一個選項? – 2012-01-18 05:49:09

+0

我想要它純粹的javascript – vaichidrewar 2012-01-18 05:50:39

+0

嗨,我在Java腳本中也添加了代碼 – 2012-01-18 06:21:36

回答

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'叉,因爲大多數現代瀏覽器都支持它,它應該比for循環更快。 – RobG 2012-01-18 06:36:35

0

儘管我討厭如何找到它,我給一個jQuery的答案(因爲mrtsherman打我衝了真正答案):

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

沒有jQuery標籤的帖子和OP的評論之前,你的答案說,他們想要純JavaScript。 – jfriend00 2012-01-18 06:08:59

+0

對不起;沒有看到評論。 – cegfault 2012-01-18 06:38:27

+0

如果OP沒有要求jQuery,你應該避免使用jQuery的答案 - 要麼明確提到jQuery,要麼使用jQuery來標記帖子。 – jfriend00 2012-01-18 06:42:01

-1

我的朋友downvote後,我已在覈心Java腳本在這裏添加代碼:

<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> 

這可以用jQuery的也可以做:

<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 2012-01-18 06:07:58

+0

感謝朋友,我在java腳本中也添加了代碼:) – 2012-01-18 06:21:10

+0

您的普通javascript版本不會執行OP要求的操作。 – jfriend00 2012-01-18 06:22:58

1

更多的優化可以做..但是這是你如何能做到這一點..

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

隨着Element.querySelectorAll,你可以使用下面的代碼來實現這一目標。

document.getElementsByTagName('span').querySelectorAll('span:not([class])'); 
相關問題