vsempizdec
@vsempizdec

Почему скрипт работает только для одного элемента?

В каждой строке таблицы выводится новый товар и соответственно input для выбора количества товаров.
Написан скрипт для получения цены с учётом количества товаров, но работает он только для первой строки таблицы:(
id не использую, тогда почему так???
$sql = "SELECT id, name, category, price, opisanie, file FROM goods";
 $result = mysqli_query($link, $sql);
 while($row = mysqli_fetch_assoc($result)){
    $itog = $itog + $row['price'];
     echo ' <tr>
        <td><img src="../img/'.$row['file'].'" class="group1" style="width: 100px;"/>  </td>    
        <td><span class="textkor">'.$row['name'].'</span></td>
        <td><span class="textkor" ><span class="priceValue">'.$row['price'].'</span>₽</span></td>
        <td><button class="button-minus">-</button>
        <input onChange="change()" type="number" value="1" class="totalItems"  min="1" max="200">
        <button class="button-plus">+</button></td>
        </tr>
        <script>
//цена товара
let itemPrice = '.$row['price'].';
    
let priceValue = document.querySelector(".priceValue");
let plusBtn = document.querySelector(".button-plus");
let minusBtn = document.querySelector(".button-minus");
let totalItems = document.querySelector(".totalItems");

//Обработчик нажатия на плюс
plusBtn.addEventListener("click", () =>{
   totalItems.value++ && change();
});

//Обработчик нажатия на минус
minusBtn.addEventListener("click", () => {
totalItems.value-- && change();
});

// изменение .priceValue при изменении в input
const change = () => {
 totalItems.value < 1 && (totalItems.value = 1);
 priceValue.textContent = itemPrice * totalItems.value;
}
</script>  ';
 }
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 2
@reactoranime
Получается у тебя на каждый элемент свой тэг скрипт.. Очень не оптимально.
Проблема твоя пофикситься если js код обернуть в замыкание. (function() {твой код тут})();

Но правильней всего будет использовать отдельный скрипт который слушает пассивно общий клик на документ по селектору, и уже например через closest() или дата атрибуты изменять счетчик.
Ответ написан
Комментировать
@ZelenovM
Может стоит как раз использовать id? Если генерируете js для каждого элемента, то почему бы не задавать кнопке id="btn_plus_'.$row['id'].'"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы