Помогите пожалуйста вычислить общую сумму
Помогите пожалуйста. Есть вот такой вот код:
<form> <table> <tr> <td><input type="text" id="xxx_1" onkeyup="document.getElementById(\'xxx_1_r\').innerHTML = (parseFloat(this.value)||0) * 50"></td> <td id="xxx_1_r"></td> </tr> <tr> <td><input type="text" id="xxx_2" onkeyup="document.getElementById(\'xxx_2_r\').innerHTML = (parseFloat(this.value)||0) * 70"></td> <td id="xxx_2_r"></td> </tr> <tr> <td><input type="text" id="xxx_3" onkeyup="document.getElementById(\'xxx_3_r\').innerHTML = (parseFloat(this.value)||0) * 90"></td> <td id="xxx_3_r"></td> </tr> </table> </form> Таблица умножает вводимое значение в input на заранее заданное число. Как можно суммировать все получаемые и выводимые значения и сразу их выводить под таблице? :( Помогите пожалуйста... |
пытался сделать как то так:
for (q = 1; q++) { i=document.getElementById('xxx_r\').value; result=result+(i*chislo; } document.write(result); Но ни чего не вышло... Необходимо сложить именно все xxx_1_r + xxx_2_r +xxx_3_r +...+ xxx_N_r |
1. Ваш пример не работает, и одна из причин - в HTML символы не маскируются обратным слэшом. Если вы внутри двойных кавычек используете одинарные, то маскировка вообще не нужна. Если же внутри двойных кавычек вдруг захотелось использовать опять же двойные, применяйте " примерно так:
onkeyup="document.getElementById("xxx_1_r&quo t; ).innerHTML = (parseFloat(this.value)||0) * 50" 2. innerHTML в таблицах в младших IE только для чтения, писать нельзя. 3. document.write используется только в процессе закрузки документа. Когда документ уже полностью загружен, document.write приведет к переписыванию документа, т.е. старое содержимое будет заменено на новое |
1) Надо убрать экранизацию с document.getElementById. Должно быть так,
- document.getElementById('xxx_N_r') 2) Вот простая функция, вызов которой делает то что тебе нужно. function getResult() { var i = 1, el = document.getElementById("xxx_" + i + "_r"), result = 0; while(el) { result += +el.innerHTML; i++; el = document.getElementById("xxx_" + i + "_r"); } alert(result); } Для того чтобы она вызывалась автоматический, нужно приписать ее к каждому событию onkeyup. Пример - onkeyup="document.getElemenyById('xxx_1_r').innerHTML = (parseFloat(this.value)||0) * 50;getResult();" Вроде то что нужно, можно сделать более эффективно, если изменить пару моментов. |
Цитата:
Цитата:
<div id="num">10</div> <div id="num">20</div> <div id="num">30</div> <div id="num">40</div> <div id="num">50</div> <div id="num">60</div> Если получиться сделать это то задача думаю будет решена. Буду очень Вам благодарен |
Тоже самое с дивами, просто задать им id с их порядковым номером а потом заменить xxx в функции getResult на num. Пример -
<div id="num_1"></div> <div id="num_2"></div> // в функции getResult изменить id el = document.getElementById("num_" + i); |
Цитата:
var i = 1, el = document.getElementById("xxx_1_r"), |
Огромное спасибо за помощь!
Прошу прощения что туплю :( Пытаюсь воспользоваться вашими советами но ни как... Я JS второй раз в жизни сталкиваюсь. Покажите пожалуйста полный готовый скрипт что бы вычислить сумму значений <div id="num_1_1">10</div> <div id="num_1_2">20</div> <div id="num_2_1">50</div> <div id="num_2_2">30</div> <div id="num_2_3">25</div> <div id="num_3_1">64</div> Что бы в блоке <div id="result"></div> Высвечивалась сумма значений всех блоков. Сегодня до 4х утра возился так и не разобрался :( |
<html> <script type="text/javascript"> function f() { var el, i = 0, result = 0; while( el = document.getElementById( "num_" + ++i ) ) result += +el.textContent; document.getElementById( "result" ).innerHTML = "sum=" + result; } </script> <div id="num_1">10</div> <div id="num_2">20</div> <div id="num_3">50</div> <div id="num_4">30</div> <div id="num_5">25</div> <div id="num_6">64</div> <input type="button" value="calculate" onclick="f();"> <div id="result"></div> </html> |
function getResult() { var i = 1, b = 1, el = document.getElementById("num_" + i + "_" + b), result = 0; while(el) { while(el) { result += +el.innerHTML; b++; el = document.getElementById("num_" + i + "_" + b); } b = 1; i++; el = document.getElementById("num_" + i + "_" + b); } document.getElementById("result").innerHTML = result; } Ред. - Код чтобы вызвать функцию <div id="calculate"></div> window.onload = function() { document.getElementById("calculate").onclick = getResult; } |
Часовой пояс GMT +3, время: 11:08. |