Могу ли я игнорировать

#javascript #html #frontend

#javascript #HTML #интерфейс

Вопрос:

У меня есть таблица и скрипт, который генерирует значения для ячеек таблицы на основе одной цены, которые существуют на этой же странице. Проблема в том, что когда prices — это > 1000 то способ создания страниц заключается в том, что он добавляет amp;nbsp; , чтобы разделить тысячи.

Это пример диапазона цен:

 <span class="price-amount">1amp;nbsp;609</span>
  

Вот как я извлекаю данные из него в качестве значения:

 var loose = parseInt(document.getElementById("price-amount").innerHTML);
  

Это работает только до 999, потому что нет amp;nbsp;

Есть ли способ игнорировать это или сделать его распознаваемым как число?

Ответ №1:

Извлеките textContent элемента, затем замените все пробелы пустой строкой. Пример для вашего HTML из 1amp;nbsp;609 :

 var loose = parseInt(document.querySelector(".price-amount").textContent.replace(/s/g, ''));
console.log(loose);  
 <span class="price-amount">1amp;nbsp;609</span>  

Пример для ввода размером менее 1000:

 var loose = parseInt(document.querySelector(".price-amount").textContent.replace(/s/g, ''));
console.log(loose);  
 <span class="price-amount">609</span>  

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

1. Все еще есть пробел между 1 и 6, поэтому это не число в этом формате.

2. Я думал, вы хотели 1609 , потому что пробелы добавляются как разделители тысяч? Удаление пробела позволяет проанализировать его как число — просто запустите фрагмент

3. Да, я хочу, чтобы это было без каких-либо пробелов между цифрами, но после того, как я применю предложенные вами изменения, скрипт по-прежнему не работает. Также, когда я просматриваю ваш фрагмент, я вижу «1 609» с пробелом между 1 и 6

4. В HTML есть amp;nbsp; , поэтому HTML будет отображаться с пробелом (это невозможно изменить без изменения HTML), но записанное loose внизу число равно 1609.

5. но добавление вашего исправления нарушает работу скрипта и начинает не работать для случаев с ценами меньше 999. Также он не работает с ними для значений выше 1000.