Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   перемножить 2 числа а потом сложить js (https://javascript.ru/forum/misc/39275-peremnozhit-2-chisla-potom-slozhit-js.html)

djonA 23.06.2013 18:06

Спасибо огромное, а подскажите как обеспечить кроссбраузерность nextElementSibling?

bes 23.06.2013 18:08

Цитата:

Сообщение от djonA (Сообщение 257998)
Спасибо огромное, а подскажите как обеспечить кроссбраузерность nextElementSibling?

также как слова в гугле забиваются

djonA 23.06.2013 18:21

так и не нашел как решить проблему nextElementSibling в ie 8.

Читал читал но так и не нашел как обеспечивать кроссбраузерность

bes 23.06.2013 19:02

а как обычно всё делают - проверяют на существование
if (elem.nextElementSibling) ....
else ...

почитай про узлы
http://learn.javascript.ru/basic-dom-node-properties

конкретно для таблиц и nextSibling подойдёт

bes 23.06.2013 19:16

ладно, не читай, выходной :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>

Olggga 24.06.2013 21:27

А подскажите как соединить вот это и вот это:

<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, а то у меня что то не получается

Olggga 24.06.2013 21:31

пробую так не работает:

<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>

skrudjmakdak 24.06.2013 21:57

вот так попробуйте:
<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>


ничего сложного нет. думайте..

bes 24.06.2013 21:58

Цитата:

Сообщение от Olggga
пробую так не работает:

djonA, это ты?

Olggga 24.06.2013 22:19

Да я с дрйгого компа зашел.
Спасибо большое всем заработало!


Часовой пояс GMT +3, время: 14:12.