2012-07-20 4 views
1

은 내가 nodeValue를가 HTML 문서nodeValue 및 필터링 된 문자?

var myVar= document.getElementsByTagName("b"); 
for (var i = 0; i < myVar.length; i++) { 
    var pumpkin = myVar[i].firstChild; 
    if(pumpkin.nodeValue == "Some text") 
    { 
    alert("exists"); 
    } 
} 

내가 찾으려는 텍스트를 &nbsp; 대신 공간과 같은 문자를 필터링이 포함 된 경우 그것은 작동하지 않습니다에 있는지 확인하는 스크립트를 만들려고 노력하고 있습니다. DOM Inspector에서 볼 때 해당 문자가 없습니다 (정상적인 공백이 있음). 그러나 페이지 소스를 볼 때 그 문자가 있습니다.

나는

if(pumpkin.nodeValue == "Some text") 

if(pumpkin.nodeValue == "Some&nbsp;text") 

을 시도했지만 모두 누구나 아이디어가 ... 실패?

(찾으려는 텍스트에이 문자가 소스 코드에 포함되어 있지 않은 경우 잘 작동합니다). 사전에 감사

답변

0

당신은 regular expression&nbsp;의 때문에 해당 문자 코드의 도움으로 그것을 할 수는 160

var myVar= document.getElementsByTagName("b"); 
for (var i = 0; i < myVar.length; i++) { 
    var str = myVar[i].firstChild.nodeValue; 
    var re = new RegExp(String.fromCharCode(160), "g"); 
    if(str.match(re)) alert("exists"); 
} 

DEMO.

+0

입니다 후, 나는이 시도하고 처음에 그것은 단지 IE와 함께 일하는 RexExp에서 "i"에 대한 "g"매개 변수를 변경했으며 firefox와 chrome에서도 작동합니다. 하지만 이제는 또 다른 문제가 있습니다. 경고는 둘 이상의 일치가 있어야한다고해도 한 번만 나타납니다. 나는 jsfiddle.net에서 동일한 코드를 테스트했지만 올바르게 작동하고있다. S – user1532339

+0

[this] (http://jsfiddle.net/heera/pqPCT/1/)와 [this] (http://jsfiddle.net/heera/pqPCT/2 /). 'match '에 의해 리턴 된 결과를 저장할 수 있으며'array'입니다. –

+0

내가 잘못 설명했다고 생각합니다. 나는 일치를 포함하고있는 하나 이상의 "b"태그가있을 때, 여전히 하나의 경고가 나타남을 의미합니다. 예를 들면 : 'Whats   up  much'2 개의 경고가 있다고 가정합니다. 단 하나만 있습니다. 마지막으로 RegExpObject.test (string) 메서드를 사용하여 작동하게했습니다. 당신의 도움을 주셔서 감사합니다! – user1532339