Как получить элементы без имени класса в JavaScript - PullRequest
1 голос
/ 18 января 2012

Я хочу извлечь текст из элементов span без имени класса.Как это можно сделать?Элементы с определенным именем класса можно искать, но как получить только элементы без имени класса для них?

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

Ответы [ 5 ]

3 голосов
/ 18 января 2012

Итерируйте их и проверьте имя класса, я полагаю.

var spans = document.getElementsByTagName('span');
for (var i = 0; i < spans.length; i++) {
    if (spans[i].className == '') {
        //span doesn't have a class
    }
}
1 голос
/ 18 января 2012

можно провести дополнительную оптимизацию ... но это то, как вы можете сделать это ..

 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 голосов
/ 13 июня 2016

С Element.querySelectorAll вы можете использовать следующий код для достижения этой цели.

document.getElementsByTagName('span').querySelectorAll('span:not([class])');
0 голосов
/ 18 января 2012

После понижения моего друга я добавил код в базовый 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 голосов
/ 18 января 2012

Несмотря на то, что я нахожу это раздражающим, я дам jQuery ответ (так как mrtsherman избил меня ударом с помощью ответа real ):

$('span:not([class])')
...