Вход

Просмотр полной версии : Пропуск Эл массива через parseInt()


messiah
13.01.2019, 14:23
В html коде:
число -
число.

Есть массив:
let arr = ['var1', 'var2'....'var12'];

Мне надо каждый val преобразовать в число (это же строки пока) и записать его в соотв. переменные var:
let var1 = parseInt($('td#var1').html());

Пишу:
for(let i= 0; i <= arr.length; i++) {
parseInt($( + " ' td#" + arr[item] + " ' " + ).html());
}
Не срабатывает. Пишу:

arr.forEach(function(item, i, arr) {
parseInt($( + " ' td#" + arr[item] + " ' " + ).html());
});
Тоже не помогает. Подскажите что не так? Подключена jQuery-2.1.0.min.js

Nexus
13.01.2019, 14:31
Каждое значение в отдельную переменную складывать глупо, да и не так это просто.
Можно использовать eval, что не есть хорошо; можно гадить в глобальную ОВ, что также не хорошо.
Лучше создать массив и складировать значения в него.
Зачем у вас + перед селектором везде стоит?

const values=$('[id^="var"]').map(function(){
return parseInt(this.textContent);
}).toArray();

j0hnik
13.01.2019, 14:31
$('td[id^="var"]').each(function(){
window[this.id] = this.textContent
});

messiah
13.01.2019, 14:44
var это образное значение td. Они по разному называются все 12 значений в ячейках. + Чтоб отделить js от селектора

j0hnik
13.01.2019, 14:47
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<table>
<tr>
<td id="var1">10</td>
<td id="var2">20</td>
<td id="var3">30</td>
<td id="var4">40</td>
<td id="var5">50</td>
</tr>
</table>

<script>
$('td[id^="var"]').each(function () {
window[this.id] =+this.textContent
});
console.log(var1,var2,var3);

</script>
я это понял, вы теги напишите нормально и будет работать

messiah
13.01.2019, 14:51
Массив такой:
let janArr = ['prem1', 'nous1', 'ovd1', 'ovz1', 'pnvl1', 'secr1', 'szvz1', 'qual1', 'naem1', 'mat1', 'nal1', 'sum1'];
Мне надо из ячейки td (prem1...) взять числовое значение, пропарсинтить и записать уже число это в переменную prem1

messiah
13.01.2019, 14:52
Я с телефона. Много писать.

messiah
13.01.2019, 14:53
И так для каждой переменной в массиве

j0hnik
13.01.2019, 14:58
janArr.forEach(function(el){
window[el] = +document.getElementById(el).textContent
});

messiah
13.01.2019, 15:01
Вообщем идея такая. Я получаю зп и написал таблицу на html, где колонки это каждая надбавка и последняя колонка полученная сумма. Пока все работает, только много кода. Я хочу его сделать меньше просто. Итоге сценарий берет сумму каждой надбавки из каждой td, складывает их и сравнивает с общей полученной суммой. Если не соответствует - .show() окно, где сказано на сколько. Для их сложения я и хочу их парсинтить в числа.

messiah
13.01.2019, 15:03
А метод forEach никак не выделяется на письме цветом. Может он не канает этой jQuery

messiah
13.01.2019, 15:05
A .forEach никак не выделяется цветом. Думаю может он не работает тут. И в for не получается. Там все выделяется.

j0hnik
13.01.2019, 17:36
А метод forEach никак не выделяется на письме цветом. Может он не канает этой jQuery
Он канает и без всяких jquery, но если вам не нравиться замените на each. но лучше от этого не станет.