Помогите пожалуйста вычислить общую сумму
Помогите пожалуйста. Есть вот такой вот код:
<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, время: 03:25. |