2016-12-15 182 views
0

我試圖找到許多不同的文本類型在innerhtml中,不知何故,當我用相同的函數和測試樣本測試它時,它找不到任何東西。JavaScript無法通過innerHTML搜索

function numberoftext (a){if (a.match(/class=\"chattext\"/g)!==null){return a.match(/class=\"chattext\"/g).length;}else{return 0;}} 
function numberofglobal (a){if (a.match(/class=\"chattextglobal\"/g)!==null){return a.match(/class=\"chattextglobal\"/g).length;}else{return 0;}} 
function numberofclan (a){if (a.match(/class=\"chattextclan\"/g)!==null){return a.match(/class=\"chattextclan\"/g).length;}else{return 0;}} 
function numberofgroup (a){if (a.match(/class=\"chattextgroup\"/g)!==null){return a.match(/class=\"chattextgroup\"/g).length;}else{return 0;}} 
function numberofwisper (a){if (a.match(/class=\"chattextwhisper\"/g)!==null){return a.match(/class=\"chattextwhisper\"/g).length;}else{return 0;}} 
function numberofworld (a){if (a.match(/class=\"worldsay\"/g)!==null){return a.match(/class=\"worldsay\">/g).length;}else{return 0;}} 
function numberofscream (a){if (a.match(/class=\"chattextscream\"/g)!==null){return a.match(/class=\"chattextscream\"/g).length;}else{return 0;}} 
var innertextraw1 =chatupdateFrame.document.documentElement.innerHTML; 
var innertextraw= innertextraw1.substring(innertextraw1.indexOf("parent.chattextFrame.add(")+26, innertextraw1.indexOf("', 0);")); 

console.log("got update",innertextraw); 
console.log("t:",numberoftext(innertextraw),"c:",numberofclan(innertextraw),"w:",numberofwisper(innertextraw),"gr:",numberofgroup(innertextraw),"gl:",numberofglobal(innertextraw),"sc:",numberofscream(innertextraw)); 

的innertextraw一個例子是:"<p class=\"chattext\"><i><b>noone</b> goes with <b>someone</b> to the house</i></p>" 還當我設置innertextraw到這是我從控制檯日誌得到了例如測試它像that正常工作,在網站上則返回0只是

回答

1

你不需要轉義您的"引號以匹配字符串中的轉義引號。

a.match(/class="chattext"/g) 

在實際的字符串,這些逃生斜線實際上不存在的,但只是沒有辦法來表示文字雙(或單)引號如果字符串使用的字符作爲分隔符,所以你必須逃避它。

這裏有一個工作示例:

var innerRawText = "<p class=\"chattext\"><i><b>noone</b> goes with <b>someone</b> to the house</i></p>"; 
 

 
var result = innerRawText.match(/class="chattext"/g); 
 
console.log(result);