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

enter image description hereJavascript .Надеть() не работает

Почему в мире это происходит? Я пробовал разделить это на отдельные string.replace(), и это дает тот же результат.

+3

заменить один экземпляр и заменить все. см. http://stackoverflow.com/questions/1144783/replacing-all-occurrences-of-a-string-in-javascript –

+1

или вы можете удалить все теги HTML (которые, как я думаю, вы хотите) => http://stackoverflow.com/questions/1499889/remove-html-tags-in-javascript-with-regex – PlantTheIdea

+1

Основной пример работает здесь: http://jsfiddle.net/MQNGJ/ – j08691

ответ

17

Использование .replace() со строкой только фиксирует первое вхождение, которое является тем, что вы видите. Если вы сделаете это с помощью регулярного выражения, вы можете указать, что он должен быть глобальным (путем указания его с помощью g) и, таким образом, принимать все вхождения.

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

См. Это fiddle для рабочего образца.

2

Вы можете использовать регулярные выражения, чтобы соответствовать всем этим в то же время:

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

g флаг в конце строки матча говорит Javascript, чтобы заменить все вхождения, а не только первый.

Смежные вопросы