Javascript «Replace» не работает со строкой, возвращаемой через jQuery

#javascript #jquery #replace

#javascript #jquery #заменить

Вопрос:

Я пытаюсь преобразовать строку валюты в число. Я использую функцию replace с регулярным выражением, которое я успешно использовал в аналогичном контексте ранее.

Строка валюты записывается здесь, в рамках цикла «each»:

 var unitGridPrice = jQuery(this).find(".clsPriceGridDtlPrice").html();
  

В результате получается, что unitGridPrice представляет собой строку валюты, что-то вроде «$ 2.75». Я пытаюсь преобразовать его в число здесь:

 var priceToConvert = unitGridPrice;
var unitGridPriceNo = Number(priceToConvert.replace(/[^0-9.] /g, ''));
  

Однако с этой последней строкой скрипт не будет запущен.

Если я использую значение priceToConvert, оно правильно отображает текстовую строку валюты, поэтому я считаю, что строка, передающая функцию replace, верна.

если я изменю «var priceToConvert = unitGridPrice» на «var priceToConvert = «$ 2.75», скрипт правильно вернет 2.75. Я могу скопировать и вставить значение, отображаемое unitGridPrice, в текстовую строку, с которой я тестирую, и это работает, но с переменной там сценарий умирает.

Я попытался удалить регулярное выражение, изменив replace на .replace(‘$’, «), и снова скрипт останавливается с переменной на месте, но работает, если я тестирую с фиксированной строкой.

Я действительно в тупике. Помогите ??!! Спасибо!!!

Комментарии:

1. Что вы имеете в виду, когда скрипт умирает? Вы получаете какие-либо ошибки?

2. Что вам console.log(unitGridPrice) показывает?

3. Сценарий не завершается, и я получаю сообщение об ошибке «priceToConvert равно null» Я попытался принудительно вывести вывод вызова jQuery с помощью функции «String» (хватаясь за соломинку), и сообщение об ошибке изменилось на «Строка не определена». В том же коде, если я удаляю функцию replace и присваиваю unitGridPrice переменной «priceToConvert», я получаю именно ту строку, которую пытаюсь преобразовать. Непонятно. Мне нужно поспать над этим.

4. Я снова попытался добавить функцию «String» для проверки сообщения об ошибке, но теперь код работает так, как ожидалось. Вау! (Я думаю) Я закрываю его на ночь и пытаюсь посмотреть, что происходит завтра. Надеюсь, он останется функциональным, пока я заканчиваю этот небольшой проект. Спасибо за помощь, приветствуется любое другое понимание того, что может происходить.

Ответ №1:

некоторое время назад у меня возникла некоторая проблема при попытке получить число из строки. проблема заключается в регулярном выражении, поэтому я изменил регулярное выражение, как показано ниже.

 var id = element.name.replace ( /[^d.]/g, '' );
  

element.name выше, как input_21, input_22 и т.д., и я хочу получить только число (21,22).
надеюсь, это может вам помочь. 🙂