Как я могу увеличивать и уменьшать значение с уникальным идентификатором?

У меня есть этот цикл, идентификатор уникален. Когда я пытаюсь увеличить, он работает только для одного поля ввода. Как я могу увеличивать и уменьшать, используя уникальный идентификатор?

          @forelse($allproduct as $key=>$data)
                            <tr>
                                <td data-label = "@lang('Date')">
                                     <div class = "quantity col-md-8" style = "display:flex; ">
                                          <input type = "text" value = "" class = "form-control req amnt display-inline" id = "qtyid[{{$data->product_id}}]" min = "0">
                                       <div class = "quantity-nav">
                                          <div class = "quantity-button quantity-up qty" onclick = "incrementValue()">+</div>
                                          <div class = "quantity-button quantity-down qty" onclick = "decrementValue()">-</div>
                                       </div>

                                    </div>
                                 </td>
                            </tr>
          @endforelse

Javascript

function incrementValue()
    {
        var value = parseInt(document.getElementById("qtyid").value, 10);
        value = isNaN(value) ? 0 : value;
        value++;
        document.getElementById('qtyid').value = value;
    }


    function decrementValue()
    {
        var value = parseInt(document.getElementById('qtyid').value, 10);
        value = isNaN(value) ? 0 : value;

        value--;
        if (value == -1) {
            value = 0;
        }
        document.getElementById('qtyid').value = value;
    }

ID должны быть уникальными. Все поля ввода в цикле имеют одинаковый идентификатор qtyid. Это не работает.

jabaa 05.05.2022 14:57

Я знаю. Я спросил, как сделать идентификатор уникальным по функции?

souvik sarkar 05.05.2022 15:04

Какой точно не работает с этим кодом? Вы столкнулись с проблемой PHP или Javascript?

Nico Haase 05.05.2022 15:05

Когда я пытаюсь увеличить, он работает только для одного поля ввода. Как я могу увеличивать и уменьшать, используя уникальный идентификатор

souvik sarkar 05.05.2022 15:07

«Как я могу увеличивать и уменьшать, используя уникальный идентификатор» - почему бы не начать с использования уникального идентификатора? Кроме того, если это не связано с PHP или самим Laravel, поделитесь сгенерированной разметкой вместе с вашими попытками решить проблему.

Nico Haase 05.05.2022 15:10

Я уже делаю идентификатор уникальным. А также используйте код laravel. Я даже не знаю, о чем ты говоришь.

souvik sarkar 05.05.2022 15:11

Тогда, пожалуйста, поделитесь более подробной информацией о вашей проблеме. Если ваши элементы имеют идентификатор, такой как qtyid[4], ваш код JS должен отражать это. Доступ к значениям через ID qtyid явно невозможен

Nico Haase 05.05.2022 20:52

Бро, это был мой вопрос. У меня был уникальный идентификатор в html, но я не мог использовать уникальный идентификатор в JS. Поэтому я задал вопрос, как это сделать. Но нвм сейчас все хорошо. Я получил ответ. Спасибо за информацию.

souvik sarkar 06.05.2022 06:59
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
8
57
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предлагаю вам использовать подход, который не требует идентификаторов.

function incrementValue(e)
    {
        // use the quantity field's DOM position relative to the button that was clicked
        const qty = e.target.parentNode.parentNode.querySelector("input.req.amnt");
        var value = parseInt(qty.value, 10);
        value = isNaN(value) ? 0 : value;
        value++;
        qty.value = value;
    }


    function decrementValue(e)
    {
        const qty = e.target.parentNode.parentNode.querySelector("input.req.amnt");
        var value = parseInt(qty.value, 10);
        value = isNaN(value) ? 0 : value;

        value--;
        if (value == -1) {
            value = 0;
        }
        qty.value = value;
    }
@forelse($allproduct as $key=>$data)
                            <tr>
                                <td data-label = "@lang('Date')">
                                     <div class = "quantity col-md-8" style = "display:flex; ">
                                          <input type = "text" value = "" class = "form-control req amnt display-inline" min = "0">
                                       <div class = "quantity-nav">
                                          <div class = "quantity-button quantity-up qty" onclick = "incrementValue(event)">+</div>
                                          <div class = "quantity-button quantity-down qty" onclick = "decrementValue(event)">-</div>
                                       </div>

                                    </div>
                                 </td>
                            </tr>
          @endforelse

Он показывает Uncaught ReferenceError: e не определен

souvik sarkar 05.05.2022 15:09

Упс, в html должно проходить event, а не e — попробуйте сейчас.

James 05.05.2022 15:17

Другие вопросы по теме