Javascript, заменяющий пространства в массиве - PullRequest
0 голосов
/ 28 марта 2011

Я в PHP, но ничего не имею в отношении Javascript, поэтому я понятия не имею, как действовать дальшеЯ пытаюсь заменить пробелы на «+» в строке 3. Кто-нибудь знает, почему это не работает?Спасибо!

var tn_dv_suggestions = new Array();
for(var tn_counter=0; tn_counter < tn_top_performers.length; tn_counter++)
tn_top_performers[tn_counter]=tn_top_performers[tn_counter].replace(" ","+");
tn_dv_suggestions.push("<a style='font-family: Verdana, Arial; font-size: 14px;' target='_blank' href='http://www.<?=$siterow['Domain']?>/Buy-"+escape(tn_top_performers[tn_counter]) +"-<?=urlencode($siterow['CitySearchName'])?>-Tickets' >"+tn_top_performers[tn_counter] +"</a><br />");
document.getElementById('tn_dv_suggestions089hZ').innerHTML=tn_dv_suggestions.join('');

Ответы [ 4 ]

3 голосов
/ 28 марта 2011

Вот решение с использованием array.map:

var replaceInArray = function(str){
  return str.replace(/\s+/g, "+")
}

var arr = ["Summer is Great", "Winter is terrible"]

arr.map(replaceInArray);
// returns => ["Summer+is+Great", "Winter+is+terrible"]

Ваша проблема заключалась в том, что вы заменяли только первый экземпляр "". Чтобы исправить это, используйте глобальный флаг, используя g с вашим регулярным выражением.

1 голос
/ 28 марта 2011

вы, вероятно, замените только первый найденный пробел. чтобы заменить их все, вам понадобится флаг global. попробуйте .replace(/\ /g, "+");

0 голосов
/ 28 марта 2011

Вы можете использовать String.replace () нормально. Проблема в том, что вам не хватает фигурных скобок, окружающих все операторы, которые вы хотите в цикле.

Фиксированный код:

var tn_dv_suggestions = new Array();
for (var tn_counter=0; tn_counter < tn_top_performers.length; tn_counter++) {
  tn_top_performers[tn_counter]=tn_top_performers[tn_counter].replace(" ","+");
  tn_dv_suggestions.push("<a style='font-family: Verdana, Arial; font-size: 14px;' target='_blank' href='http://www.<?=$siterow['Domain']?>/Buy-"+escape(tn_top_performers[tn_counter]) +"-<?=urlencode($siterow['CitySearchName'])?>-Tickets' >"+tn_top_performers[tn_counter] +"</a><br />");
}
document.getElementById('tn_dv_suggestions089hZ').innerHTML=tn_dv_suggestions.join('');
0 голосов
/ 28 марта 2011

Проверено на FF3 и Chrome.

tn_top_performers[tn_counter]=tn_top_performers[tn_counter].replace(/ /g,"+");

Редактировать: Не забывайте "" (пробел) между косой чертой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...