перемножить 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, время: 19:00. |