2012-01-18 4 views
1

클래스 이름이없는 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> 
+0

당신은 순수한 자바 스크립트 또는 jquery에서 이것을 원할 수 있습니까? –

+0

나는 순수한 자바 스크립트로 이것을 원한다. – vaichidrewar

+0

안녕하세요, 자바 스크립트 코드도 추가했습니다. –

답변

3

나는 그들을 반복하여 내가 가정하는 클래스 이름을 확인하십시오. (mrtsherman이 실제 답을 주먹으로 날 이길 때문에)

내가 찾는 방법 성가신에도 불구하고
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

0

, 나는 jQuery를 대답을주지 :

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

게시물에 jQuery 태그가 없으며 답변 앞에 OP가 대답하여 일반 자바 스크립트가 필요하다고 말합니다. – jfriend00

+0

죄송합니다. 의견을 보지 못했습니다. – cegfault

+0

OP가 jQuery를 요구하지 않으면 jQuery를 명시 적으로 언급하거나 jQuery로 태그가 지정되어 있으면 jQuery 응답을 자제해야합니다. – jfriend00

-1

을 내 친구의 downvote 후 I 여기에 핵심 자바 스크립트 코드를 추가 한 :

이것은 또한 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> 

:

,363,210
<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가 의견을 말합니다. 일반 자바 스크립트가 필요합니다. – jfriend00

+0

고마워 친구, 자바 스크립트 코드도 추가했습니다 :) –

+0

일반 자바 스크립트 버전은 OP가 요청한 것을 수행하지 않습니다. – jfriend00

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])');