2016-12-15 2 views
0

Ich versuche zu finden, dass viele verschiedene Texttypen in einem Innerhtml sind, irgendwie findet es nichts, aber wenn ich es mit den gleichen Funktionen und einem Testmuster erstelle, funktioniert es.Javascript kann nicht innerHTML durchsuchen

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

ein Beispiel für innertextraw ist: "<p class=\"chattext\"><i><b>noone</b> goes with <b>someone</b> to the house</i></p>" es wie that Testen funktioniert auch gut, wenn ich zum Beispiel innertextraw gesetzt, die ich aus dem Konsolenprotokoll bekam, in der Website gibt es nur 0.

Antwort

1

Sie Sie müssen Ihre " Anführungszeichen nicht entgehen lassen, um gematchte Anführungszeichen in einer Zeichenfolge zu finden.

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

In einem echten String, tun diese Flucht Schrägstriche nicht wirklich existieren, gibt es einfach keine Möglichkeit, ein wörtliches doppeltes (oder einzelnes) Zitat darstellen, wenn die Zeichenfolge ist das Zeichen als Trennzeichen verwenden, so müssen Sie entkomme es.

Hier ist ein funktionierendes Beispiel:

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

Verwandte Themen