JS цикл c PHP переменными

232
21 октября 2017, 16:54

Здравствуйте. Заранее спасибо за помощь. Опишу ситуацию. Есть данный HTML:

<tr id="dayWrap"> 
  <td><span class="day1"><?php echo $product['price_1']; ?></span></td> 
  <td><span class="day2"><?php echo $product['price_2']; ?></span></td> 
  <td><span class="day3"><?php echo $product['price_3']; ?></span></td> 
  <td><span class="day4"><?php echo $product['price_4']; ?></span></td> 
  <td><span class="day5"><?php echo $product['price_5']; ?></span></td> 
</tr> 
 
<span class="total_cat" style="float: right; display: inline-block"></span>

В каждую ячейку для каждой таблицы вставляется своя цена. В итоге в total_cat будет выводиться сумма(dif (количество натуральных чисел) * значение переменной $price_n). Есть JS:

 //захват столбцов с ценами(дни) 
let num = dayWrap.getElementsByTagName('span'); 
 
//записываем цены в массив 
var values = []; 
for ( let i = 0; i < num.length; i++ ) { 
    values.push( num[i].innerHTML ); 
} 
if (dif >=2 && dif <= 3 ) { 
  for (var i = 0; i < day2.length; i++) { 
    day2[i].classList.add("red-circle");//добавление стилей 
  } 
  classRemove(day1);//удаление стилей для других элементов 
  classRemove(day3); 
  classRemove(day4); 
  classRemove(day5); 
 
  var priceForTotal = values[1] * dif;//ТУТ КОСЯК!!! 
 
  for(let i = 0; i< total.length; i++){//Вывод суммы в нужном формате 
    total[i].innerHTML = "Всего: <br> За "+ dif + " дня(дней) " +'<br>' + priceForTotal + ' €'; 
  } 
}

В комментарии показано место ошибки и суть вопроса. Нужно, чтобы цены адекватно считались если они подходят к условию if, если вызывать, через values[1], то добавляется одна цена для всех остальных таких таблиц.

Как сделать динамический подсчет для всех таблиц с учетом корректных цен каждой таблицы(надеюсь, понятно объяснил=)).

Спасибо!

Answer 1

После комментариев, я так понял, проблема в том, что вы проходите по всем span из всех таблиц, и вы не можете посчитать данные для нужной, поэтому (хоть всего кода не видно), нужно всю конструкцию начать с цикла перебора таблиц

var tables = document.querySelectorAll('table')
for (i = 0; i < tables.length; ++i) {
   let num = tables[i].getElementsByTagName('span');
   // дальше num будут только для конкретной таблицы, а не у всех общая
   // ваш код
}
READ ALSO
Как вывести массив

Как вывести массив

Скрипт,собирающий статистику о посещениях сайтаНужно вывести город и страну

262
Проблема со шрифтами на сайте

Проблема со шрифтами на сайте

Я использовал два шрифта похожих на друг друга, Bebas Neune & League Gothic, но почему-то в браузере они выглядят очень коряво и угловато? Почему так...

341
Не работает медиа-запрос на конкретную ширину экрана [требует правки]

Не работает медиа-запрос на конкретную ширину экрана [требует правки]

Делаю адаптивную версию сайтаПочему некоторые медиа-запросы не работают, а игнорируются? Например, последний запрос на 700px?

300
char[] в Character[]

char[] в Character[]

Как перевести массив char[] к его оболочке Character[] для дальнейшей сортировки в обратном порядке? Делаю по аналогии как с int -> Integer:

219