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