Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Узнаем позицию элемента (https://javascript.ru/forum/misc/19254-uznaem-poziciyu-ehlementa.html)

Armen 29.07.2011 20:09

Узнаем позицию элемента
 
Помогите пожалуйста.
Есть список
<ul id="lists-r1">
                    <li class="list-r1">Alcohol And Drugs</li>
                    <li class="list-r1">Becoming Familiar With Your Vehicle</li>
                    <li class="list-r1">Defensive Driving Techniques</li>
                    <li class="list-r1">Driving In Bad Weather</li>
                    <li class="list-r1">Driving Privileges</li>
                    <li class="list-r1">Laws And Rules Of The Road</li>
                    <li class="list-r1">Road Rage</li>
                    <li class="list-r1">Seat Belts</li>
                    <li class="list-r1">Sharing The Road</li>
                    <li class="list-r1">Signs, Signals, and Markings</li>
                    <li class="list-r1">Space Management</li>                
                </ul>

И js, который срабатывает при загрузке страницы
function posY(elem)
			{
				return elem.parentNode == elem.offsetParent ? elem.offsetTop : pageY(elem) - pageY(elem.parentNode);
			};

			function getPlay(_timeDelay, _timeSpeed, _timeOpacity)
			{
				this.timeDelay = _timeDelay;
				this.timeSpeed = _timeSpeed;
				this.timeOpacity = _timeOpacity;				
			};
			getPlay.prototype.getPosition = function()
			{
				this.li = document.getElementsByClassName('list-r1');		
				for(var i = 0; i <= this.li.length; i ++)
				{
					alert( posY(this.li) );
					
				}					
			};
			
			var obj = new getPlay(10, 20, 30);
			obj.getPosition();

Проблема в том, что алерт вместо того, чтоб возвращать позицию элемента по оси Y, возвращает undefined
Подскажите пожалуйста, что не так

monolithed 29.07.2011 21:28

<ul id="ul">
    <li>Alcohol And Drugs</li>
    <li>Becoming Familiar With Your Vehicle</li>
</ul>
<script>
var li = document.getElementById('ul').children, i = li.length;

while(i--) {
     alert(li[i].offsetTop);
}
</script>

Armen 01.08.2011 14:59

Цитата:

Сообщение от monolithed (Сообщение 116197)
<ul id="ul">
    <li>Alcohol And Drugs</li>
    <li>Becoming Familiar With Your Vehicle</li>
</ul>
<script>
var li = document.getElementById('ul').children, i = li.length;

while(i--) {
     alert(li[i].offsetTop);
}
</script>

Спасибо. все супер.
Но мне нужно, чтоб цикл начинался с первого элемента, а не как у вас с последнего.
Подскажите пожалуйста, как можно реализовать подобное?

walik 01.08.2011 15:03

Цитата:

Сообщение от Armen
Но мне нужно, чтоб цикл начинался с первого элемента, а не как у вас с последнего.
Подскажите пожалуйста, как можно реализовать подобное?

мб поменять просто условие в цикле ?


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