Выполнение простого расчета в таблице с переменным вводом пользователем (числовое поле)

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

Таблица выглядит следующим образом: Стол

Мой код в HTML выглядит так:

<table class = "accesspoints">
        <caption>
          Access Points
        </caption>

        <tr>
          <th>Access Point</th>
          <th>Power Draw (Watt)</th>
          <th>PoE port required</th>
          <th>Number installed?</th>
          <th>Power consumption</th>
        </tr>

        <tr>
          <td>
            <a href = "https://eu.store.ui.com/eu/en/pro/category/all-wifi/products/u7-pro-max" target = "_blank">U7 Pro Max</a>
          </td>
          <td class = "powerperdevice">25</td>
          <td>PoE+</td>
          <td class = "numberofdevices"><input type = "number" name = "apinstalled" placeholder = "Number installed?"></td>
          <td class = "totalpowerperdevice"></td>
        </tr>

        <tr>
          <td>
            <a href = "https://eu.store.ui.com/eu/en/pro/category/all-wifi/products/u7-pro" target = "_blank">U7 Pro</a>
          </td>
          <td class = "powerperdevice">21</td>
          <td>PoE+</td>
          <td class = "numberofdevices"><input type = "number" name = "apinstalled" placeholder = "Number installed?"></td>
          <td class = "totalpowerperdevice"></td>
        </tr>

        <tr>
          <td>
            <a href = "https://eu.store.ui.com/eu/en/pro/category/all-wifi/products/u7-pro-wall" target = "_blank">U7 Pro Wall</a>
          </td>
          <td class = "powerperdevice">22</td>
          <td>PoE+</td>
          <td class = "numberofdevices"><input type = "number" name = "apinstalled" placeholder = "Number installed?"></td>
          <td class = "totalpowerperdevice"></td>
        </tr>

        <tr>
          <td>
            <a href = "https://eu.store.ui.com/eu/en/pro/category/all-wifi/products/u7-outdoor" target = "_blank">U7 Outdoor</a>
          </td>
          <td class = "powerperdevice">19</td>
          <td>PoE+</td>
          <td class = "numberofdevices"><input type = "number" name = "apinstalled" placeholder = "Number installed?"></td>
          <td class = "totalpowerperdevice"></td>
        </tr>
<!-- Total power consumption for Access Points-->
        <tr> 
          <td></td>
          <td></td>
          <td></td>
          <td class = "totalpower">Total power consumption:</td>
          <td class = ""></td>
        </tr>

      </table>

Я немного не уверен, смогу ли я запрограммировать это на Javascript для расчета общего энергопотребления без отдельных идентификаторов для каждой строки.

Итак, мой вопрос: можно ли заставить Javascript вычислять каждую строку отдельно? А потом в конце просуммировать все 's'?

Впервые пытаюсь задать вопрос, поэтому, если я не понял, дайте мне знать, и я постараюсь предоставить больше данных.

Заранее спасибо!

Поведение ключевого слова "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) для оценки ваших знаний,...
0
0
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Мне казалось, что я увидел ответ на этот вопрос сегодня, я даже помню, как редактировал ответ, но сейчас не вижу его.

Однако ниже у меня есть альтернатива, чтобы она не осталась без ответа.

После небольшого изменения элементов таблицы приведенный ниже сценарий вычисляет итоги построчно и соответствующим образом обновляет общий итог.

Вы можете попробовать запустить приведенный ниже фрагмент кода:

        const table = document.getElementsByClassName('accesspoints')[0];
        const grandTotal =  document.getElementsByClassName('grandPowerTotal')[0];
        const inputTotals = document.getElementsByName('total');

        table.addEventListener('input', ({ target }) => {
            const tr = target.closest('tr');
            const [power, count, total] = tr.querySelectorAll('input');
            total.value=power.value * count.value;

            var temp= 0;
            for (i=0; i<inputTotals.length; i++){
                temp += Number(inputTotals[i].value);
            }
            grandTotal.innerText= temp;           
        });
    <table class = "accesspoints">
        <caption>
          Access Points
        </caption>

        <tr>
          <th>Access Point</th>
          <th>Power Draw (Watt)</th>
          <th>PoE port required</th>
          <th>Number installed?</th>
          <th>Power consumption</th>
        </tr>

        <tr>
          <td>
            <a href = "https://eu.store.ui.com/eu/en/pro/category/all-wifi/products/u7-pro-max" target = "_blank">U7 Pro Max</a>
          </td>
          <td class = "powerperdevice"><input type = "text" name = "power" readonly value = "25"></td>
          <td>PoE+</td>
          <td class = "numberofdevices"><input type = "number" name = "count" placeholder = "Number installed?"></td>
          <td class = "totalpowerperdevice"><input type = "text" name = "total"></td>
        </tr>

        <tr>
          <td>
            <a href = "https://eu.store.ui.com/eu/en/pro/category/all-wifi/products/u7-pro" target = "_blank">U7 Pro</a>
          </td>
          <td class = "powerperdevice"><input type = "text" name = "power" readonly value = "21"></td>
          <td>PoE+</td>
          <td class = "numberofdevices"><input type = "number" name = "count" placeholder = "Number installed?"></td>
          <td class = "totalpowerperdevice"><input type = "text" name = "total"></td>
        </tr>

        <tr>
          <td>
            <a href = "https://eu.store.ui.com/eu/en/pro/category/all-wifi/products/u7-pro-wall" target = "_blank">U7 Pro Wall</a>
          </td>
          <td class = "powerperdevice"><input type = "text" name = "power" readonly value = "22"></td>
          <td>PoE+</td>
          <td class = "numberofdevices"><input type = "number" name = "count" placeholder = "Number installed?"></td>
          <td class = "totalpowerperdevice"><input type = "text" name = "total"></td>
        </tr>

        <tr>
          <td>
            <a href = "https://eu.store.ui.com/eu/en/pro/category/all-wifi/products/u7-outdoor" target = "_blank">U7 Outdoor</a>
          </td>
          <td class = "powerperdevice"><input type = "text" name = "power" readonly value = "19"></td>
          <td>PoE+</td>
          <td class = "numberofdevices"><input type = "number" name = "count" placeholder = "Number installed?"></td>
          <td class = "totalpowerperdevice"><input type = "text" name = "total"></td>
        </tr>
<!-- Total power consumption for Access Points-->
        <tr> 
          <td></td>
          <td></td>
          <td></td>
          <td class = "totalpower">Total power consumption:</td>
          <td class = "grandPowerTotal">0</td>
        </tr>

      </table>

Привет, Халук, на мой вопрос действительно был дан ответ ранее. Понятия не имею, почему ответ был удален. Однако спасибо за ваш ответ, это другое решение, поэтому мне будет приятно проверить возможные решения и проанализировать ваше решение, чтобы лучше понять!

GielV 15.07.2024 11:50

Привет, Халук, внимание :) Я попробовал ваш код, но сначала он не сработал, кажется, вы забыли поставить «let» в цикл for. code for (let i = 0; i < inputTotals.length; i++) { temp += Number(inputTotals[i].value); } code Это сработало! :)

GielV 16.07.2024 09:50

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