Intereting Posts
Сделать панель прокрутки в блоках кода RMarkdown (просмотр html) Как запустить поиск Google в новой вкладке или окне из javascript? Форма Html представляет как объект хранилища данных, так и blobstore через движок приложения VBScript для ссылки на ссылку на страницу веб-страницы, которая вызывает встроенную функцию (?) Javascript Почему стиль этих почти идентичных страниц отличается? JQuery заменяет текст внутри html Как я могу получить липкий нижний колонтитул на тему WordPress? html5 проблема с вертикальным интервалом с помощью Как отключить параметры печати в браузере для определенных страниц Как получить div ID JQUERY Использование jQuery для фильтрации таблицы из нескольких элементов выбора Заполнение элементов html div страниц с помощью javascript Кнопка или ссылка, которая меняет страницу в iframe Сохранить текущее состояние после функции jquery click Как запретить пользователю вводить текстовое поле без отключения поля?

Как получить значение текстового поля, когда значение раскрывающегося списка изменилось в javascript

У меня есть таблица, которая содержит таблицу, подобную

общее количество товаров

яблоко 100 2 200

оранжевый 200 2 600

общая сумма = 600.

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

Мой код Javascript:

function totalprice(element, price) { var elementid = element.id; var expr = elementid.substring(elementid.indexOf(":") + 1, elementid.length); var quantity = document.getElementById("quantity:" + expr).value; var price = document.getElementById("price:" + expr).value; if (quantity > 0) { document.getElementById("total:" + expr).value = (parseInt(quantity)) * (parseInt(price)); var grandtotal = document.getElementById("total:" + expr).value; var gtot = 0; var amount = 0; for (var i = 0; i <= expr; i++) { //document.getElementById("total").value=""; gtot = document.getElementById("total:" + expr).value; amount = parseInt(gtot) + parseInt(amount); } document.getElementById("total").value = amount; } return true; } 

Я знаю, что ошибка в цикле только простая, но я не знаю, как ее решить.

Я получил решение для этого, используя длину строк таблицы и использую эту длину для цикла for. Теперь мой код похож на

 function totalprice(element,price) 

{

 var elementid=element.id; var expr = elementid.substring(elementid.indexOf(":") + 1, elementid.length); var quantity = document.getElementById("quantity:"+expr).value; var price = document.getElementById("price:" + expr).value; if(quantity >0) { document.getElementById("total:"+ expr ).value= (parseInt(quantity))*(parseInt(price)); //var grandtotal =document.getElementById("total:"+expr).value; //var grandtotal = document.getElementsByClassName("total"+expr); var rowcount = document.getElementById('table').rows.length; var grandtotal = 0; var finalamount = 0; for(var i=1; i 

}

Вот код, который вам нужен:

Java Script:

  

HTML:

  

Я вижу две ошибки в вашем цикле for , сначала вы забыли использовать i в своем getElement, чтобы вы проходили одно и то же поле несколько раз, во-вторых, вы только пробиваете входные данные, предшествующие обновленному полю ( i<=expr ), когда вы действительно хотите пройти все «полные» поля, чтобы получить общую сумму, я бы предложил дать class всем вашим полным полям, а затем использовать этот код для вашего цикла

 var total_fields = document.getElementsByClassName('total'); for (var i = 0; i < total_fields.length; i++) { gtot = total_fields[i].value; amount+= parseInt(gtot); } document.getElementById("total").value = amount; 

Я думаю, что проблема здесь:

«Моя проблема в том, чтобы снова выбрать яблоко и апельсин»

Потому что я не вижу в вашем коде, что вы фактически обновляете elements id при вычислении общего количества.

Итак … Если вы это сделаете:

 gtot = document.getElementById("total:" + expr).value; 

Первый раз будет работать, потому что expr var является исходным, тогда gtot – это element id правого element id
но…
… когда вы делаете второе изменение, у var теперь другое значение … и gtot не будет соответствовать element id чтобы пересчитать новое значение. (или в худшем случае, будет соответствовать другому и обновить неверный)