2013-10-24 16 views
9
Arbeits
carList = cars.innerHTML; 
alert(carList); 
carList = carList.replace("<center>","").replace("</center>","").replace("<b>","").replace("</b>",""); 
alert(carList); 

enter image description hereJavascript .replace() nicht

Warum in der Welt ist das passiert? Ich habe versucht, dies in einzelne string.replace() zu trennen, und das gibt das gleiche Ergebnis.

+3

ersetzen Sie eine Instanz gegen alle ersetzen. siehe http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript –

+1

oder Sie könnten alle HTML-Tags entfernen (was ich denke, was Sie wollen) => http://stackoverflow.com/questions/1499889/remove-html-tags-in-javascript-with-regex – PlantTheIdea

+1

Ein einfaches Beispiel funktioniert hier: http://jsfiddle.net/MQNGJ/ – j08691

Antwort

17

Die Verwendung von .replace() mit einer Zeichenfolge wird nur das erste Vorkommnis beheben, das Sie sehen. Wenn Sie es stattdessen mit einem regulären Ausdruck tun, können Sie angeben, dass es global sein soll (indem Sie es mit einem g hinterher angeben) und somit alle Vorkommen nehmen.

carList = "<center>blabla</center> <b>some bold stuff</b> <b>some other bold stuff</b>"; 
alert(carList); 
carList = carList.replace(/<center>/g,"").replace(/<\/center>/g,"").replace(/<b>/g,"").replace(/<\/b>/g,""); 
alert(carList); 

Siehe dieses fiddle für eine funktionierende Probe.

2

Sie können einen regulären Ausdruck verwenden, um alle diese zugleich entsprechen:

carList = carList.replace(/<\/?(b|center)>/g,""); 

Die g Flagge am Ende des Matchstrings sagt Javascript alle Vorkommen zu ersetzen, nicht nur die erste.

Verwandte Themen