Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Работа с циклом for (https://javascript.ru/forum/misc/19202-rabota-s-ciklom.html)

Armen 28.07.2011 18:04

Работа с циклом for
 
Здравсвуйте, подскажите пожалуйста, почему alert в цикле for не отрабатывает.
<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>

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

B@rmaley.e><e 28.07.2011 18:15

Скажите, что больше, "килограмм" или "зелёный"?

Armen 28.07.2011 18:18

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 115880)
Скажите, что больше, "килограмм" или "зелёный"?

Можно нормально ответить?

розовый слоник 28.07.2011 18:20

this.li = document.getElementsByClassName('list-r1');      
for(var i = 0; i <= this.li; i ++)


во первых. getElementsByClassName - не кросбраузерно и исспользование не желательно

во вторых. i <= this.li - wtf? i меньше или равно массив?))

Armen 28.07.2011 18:22

Цитата:

Сообщение от розовый слоник (Сообщение 115884)
this.li = document.getElementsByClassName('list-r1');      
for(var i = 0; i <= this.li; i ++)


во первых. getElementsByClassName - не кросбраузерно и исспользование не желательно

во вторых. i <= this.li - wtf? i меньше или равно массив?))

Точно, length пропустил, спасибо

розовый слоник 28.07.2011 18:25

я бы на вашем месте сделал бы this.li = document.getElementById('lists-r1').getElementsByTagName('li');

nikita.mmf 29.07.2011 12:57

Для обхода коллекции элементов лучше использовать следующий код
for ( var i = 0; this.li[i]; i++ ) {
}


Так коллекция элементов не является массивом, а является объектов, и в IE свойство length может возращать элемент коллекции.

Kolyaj 29.07.2011 12:59

Цитата:

Сообщение от nikita.mmf
и в IE свойство length может возращать элемент коллекции.

Пример?

nikita.mmf 29.07.2011 13:03

<div>
	<input type="text" name="a"/>
	<input type="text" name="b"/>
	<input type="text" name="length"/>
</div>


var inp = document.getElementsByTagName("input");
alert(typeof inp.length);

розовый слоник 29.07.2011 13:13

ы туплю


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