перемножить 2 числа а потом сложить js
подскажите необходимо перемножить некоторые числа, а потом сложить и вывести сумму в span.
Со сложением и выводом в span разобрался делаю вот так: <table> <tr> <td class="sumItg">1</td> <td class="sumItg">2</td> <td class="sumItg">3</td> </tr> </table> <script type="text/javascript"> var sumItg=0, td=document.getElementsByTagName('td'), i=td.length; while(i--) {if(td[i].className=='sumItg') sumItg+=+td[i].innerHTML} document.getElementById('parent').innerHTML = sumItg </script> <span id="parent"></span> А необходимо еще добавить сюда умножение: Т.е в <td> добавить еще умножение. Т.е вот так: <table> <tr> <td class="sumItg">1</td><td class="test">2</td> <td class="sumItg">2</td><td class="test">2</td> <td class="sumItg">3</td><td class="test">2</td> </tr> </table> Вначале перемножить sumItg и test, а потом просумировать и вывести в span id="parent" |
и что у тебя не получается?
|
не получается добавить умножение, т.е в начале умножение а потом уже сложение.
|
собери полный тестовый пример с возможностью запуска [html run]
|
<table><tr> <td class="sumItg">1</td> <td class="sumItg">2</td> <td class="sumItg">3</td> </tr></table> <script type="text/javascript"> var sumItg=0, td=document.getElementsByTagName('td'), i=td.length; while(i--) {if(td[i].className=='sumItg') sumItg+=+td[i].innerHTML} alert(sumItg) </script> Вот так складываю. А мне надо добавить еще элемент умножение и вначале умножить на него и потом сложить. <table><tr> <td class="sumItg">1</td> <td class="test">2</td> <td class="sumItg">2</td> <td class="test">3</td> <td class="sumItg">3</td> <td class="test">2</td> </tr></table> не могу дописать js скрипт что бы вначале перемножал а потом складывал? |
ну, отформатировал за тебя, чё надо-то
<table> <tr> <td class="sumItg">1</td> <td class="sumItg">2</td> <td class="sumItg">3</td> </tr> </table> <span id="parent"></span> <script> window.onload = function () { var sumItg = 0; var td = document.getElementsByTagName('td'); var i = td.length; while(i--) { if(td[i].className == 'sumItg') { sumItg += +td[i].innerHTML; } document.getElementById('parent').innerHTML = sumItg; } } </script> |
надо добавить еще <td> и умножить на него, что бы было вот так:
<table><tr> <td class="sumItg">1</td> <td class="test">2</td> <td class="sumItg">2</td> <td class="test">3</td> <td class="sumItg">3</td> <td class="test">2</td> </tr></table> вначале перемножить sumItg на test, а потом все сложить |
собери полный тестовый пример с возможностью запуска [html run]
|
<table> <tr> <td class="sumItg">1</td> <td class="test">2</td> <td class="sumItg">2</td> <td class="test">2</td> <td class="sumItg">3</td> <td class="test">2</td> </tr> </table> <span id="parent"></span> <script> window.onload = function () { var sumItg = 0; var td = document.getElementsByTagName('td'); var i = td.length; while(i--) { if(td[i].className == 'sumItg') { sumItg += +td[i].innerHTML; } document.getElementById('parent').innerHTML = sumItg; } } </script> только не могу изменить js что бы оно вначале перемножало sumItg на test а потом результат складывало и выводило рез-тат в id="parent" |
<table> <tr> <td class="sumItg">1</td> <td class="test">2</td> <td class="sumItg">2</td> <td class="test">3</td> <td class="sumItg">3</td> <td class="test">4</td> </tr> </table> <span id="parent"></span> <script> window.onload = function () { var sumItg = 0; var td = document.getElementsByTagName('td'); var i = td.length; while(i--) { if(td[i].className == 'sumItg') { sumItg += td[i].innerHTML * td[i].nextElementSibling.innerHTML; } } document.getElementById('parent').innerHTML = sumItg; } </script> не забудь обеспечить кроссбраузерность nextElementSibling |
Спасибо огромное, а подскажите как обеспечить кроссбраузерность nextElementSibling?
|
Цитата:
|
так и не нашел как решить проблему nextElementSibling в ie 8.
Читал читал но так и не нашел как обеспечивать кроссбраузерность |
а как обычно всё делают - проверяют на существование
if (elem.nextElementSibling) .... else ... почитай про узлы http://learn.javascript.ru/basic-dom-node-properties конкретно для таблиц и nextSibling подойдёт |
ладно, не читай, выходной :D
<div> <span>1</span> <span>2</span> </div> <span id="parent"></span> <script> function nextElementSibling(elem) { if (elem.nextElementSibling) { return elem.nextElementSibling; } else { while (elem.nextSibling) { if (elem.nextSibling.nodeType == 1) { return elem.nextSibling; } else { elem = elem.nextSibling; } } } return null; } window.onload = function () { var spans = document.getElementsByTagName('span'); alert(nextElementSibling(spans[0]).innerHTML); alert(nextElementSibling(spans[1])); } </script> |
А подскажите как соединить вот это и вот это:
<table> <tr> <td class="sumItg">1</td> <td class="test">2</td> <td class="sumItg">2</td> <td class="test">3</td> <td class="sumItg">3</td> <td class="test">4</td> </tr> </table> <span id="parent"></span> <script> window.onload = function () { var sumItg = 0; var td = document.getElementsByTagName('td'); var i = td.length; while(i--) { if(td[i].className == 'sumItg') { sumItg += td[i].innerHTML * td[i].nextElementSibling.innerHTML; } } document.getElementById('parent').innerHTML = sumItg; } </script> <div> <span>1</span> <span>2</span> </div> <span id="parent"></span> <script> function nextElementSibling(elem) { if (elem.nextElementSibling) { return elem.nextElementSibling; } else { while (elem.nextSibling) { if (elem.nextSibling.nodeType == 1) { return elem.nextSibling; } else { elem = elem.nextSibling; } } } return null; } window.onload = function () { var spans = document.getElementsByTagName('span'); alert(nextElementSibling(spans[0]).innerHTML); alert(nextElementSibling(spans[1])); } </script> что 1 код был кросбраузерный и работал в ie 7-8, а то у меня что то не получается |
пробую так не работает:
<table> <tr> <td class="sumItg">1</td> <td class="test">2</td> <td class="sumItg">2</td> <td class="test">3</td> <td class="sumItg">3</td> <td class="test">4</td> </tr> </table> <span id="parent"></span> <script> function nextElementSibling(elem) { if (elem.nextElementSibling) { return elem.nextElementSibling; } else { while (elem.nextSibling) { if (elem.nextSibling.nodeType == 1) { return elem.nextSibling; } else { elem = elem.nextSibling; } } } return null; } window.onload = function () { var sumItg = 0; var td = document.getElementsByTagName('td'); var i = td.length; while(i--) { if(td[i].className == 'sumItg') { sumItg += +td[i].innerHTML * td[i].nextElementSibling.innerHTML; } } document.getElementById('parent').innerHTML = sumItg; } </script> |
вот так попробуйте:
<html> <body> <table> <tr> <td class="sumItg">1</td> <td class="test">2</td> <td class="sumItg">2</td> <td class="test">3</td> <td class="sumItg">3</td> <td class="test">4</td> </tr> </table> <span id="parent"></span> <script> function nextElementSibling(elem) { if (elem.nextElementSibling) return elem.nextElementSibling; while (elem.nextSibling) { if (elem.nextSibling.nodeType == 1) return elem.nextSibling; elem = elem.nextSibling; } return null; } window.onload = function () { var sumItg = 0; var td = document.getElementsByTagName('td'); var i = td.length - 1; while(i--) { if(td[i].className == 'sumItg') sumItg += parseInt(td[i].innerHTML) * parseInt(nextElementSibling(td[i]).innerHTML); } document.getElementById('parent').innerHTML = sumItg; } </script> </body> </html> ничего сложного нет. думайте.. |
Цитата:
|
Да я с дрйгого компа зашел.
Спасибо большое всем заработало! |
Цитата:
|
Часовой пояс GMT +3, время: 06:41. |