#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.