Спасибо огромное, а подскажите как обеспечить кроссбраузерность 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, время: 14:12. |