2015-04-11 2 views
0

Im новичок в JavaScript и я хочу, чтобы вы помогли мне преобразовать этот код из для к в то время каккод Javascript для новичков

var el = document.getElementsByClassName('_3hqu'); 
for(var i=0; i<el.length;i++) { 
el[i].click(); 
} 

Когда я запускаю этот код в хромированной консоли оно работает. Но когда я попробую свои собственные пока код его не работает, можете ли вы помочь мне найти мои ошибки?

while (true) 
{ 
    if (el[0].length != 1) 
    { 
     if (el[1].length = 0) 
     { 
      el[1].click(); 
     } 
     else 
     { 
      break; 
     } 
    } 
    else if (el[0].length = 0) 
    { 
     el[0].click(); 
    } 
    else 
    { 
     break; 
    } 
var el = document.getElementsByClassName('_3hqu'); 
} 

Также, если я хочу проверить все «el» и когда он найдет последний прокрутить вниз ???

проверить это

var el = document.getElementsByClassName('_3hqu'); 
    var objDiv = document.querySelector("._1v31 .uiScrollableAreaWrap"); 
    var n = -1; 
    while (true) 
    { 
     if (n == el.length) 
     { 
      break; 
     } 
     else 
     { 
      objDiv.scrollTop = objDiv.scrollHeight; 
     } 
     n = el.length; 
     var el = document.getElementsByClassName('_3hqu'); 
    } 

Что-то вроде этого, но это не работает. я получаю ошибку

TypeError: Cannot read property 'scrollHeight' of null

Спасибо

ответ

3

A for петля может быть преобразована в петлю while следующим образом:

for (a; b; c) { 
    d; 
} 

к:

a; 
while (b) { 
    d; 
    c; 
} 

Таким образом, ваш цикл for как while бы просто:

var el = document.getElementsByClassName('_3hqu'); 
var i = 0; 
while (i < el.length) { 
    el[i].click(); 
    i++; 
} 
+0

Спасибо, человек, вы могли бы проверить вторую часть вопроса тоже ??? –

+0

@SteliosM: Вам не нужно устанавливать 'objDiv.scrollTop' в цикле, нет ничего, что было бы изменено циклом, и не имеет значения, где в коде, который вы установили свойство, поскольку браузер выиграл ' t на самом деле прокрутка до конца вашего кода. – Guffa

+0

И как я могу прокрутить вниз, когда нажимает на последний элемент ??? Потому что, когда я прокручиваю вниз, появляются другие предметы, которых раньше не было. –

0

Во-первых есть что-то не так в вашем случае блоки: el[1].length = 0 вы назначаете, не дорожит проверки.

Изменить что: el[1].length == 0

То же самое для другой линии: el[0].length = 0 к el[0].length == 0

+0

я получаю SyntaxError: Illegal break statement –

1

не совсем уверен, что вы пытаетесь сделать, но преобразовать его в эквивалент в то время как петля

var i=0; 
while(i<el.length) { 
    el[i].click(); 
    i++; 
} 
0

Я не знаю, почему вы хотите использовать этот уродливый в то время как вместо для, но это ваш код. Основная проблема с этим кодом в состоянии:

length = 0 

с этим присвоенным в длина значение атрибута 0. Для сравнения вы должны использовать:

length == 0 
0
while (true) 
{ 
    if (el[0].length != 1) 
    { 
     if (el[1].length = 0) // should probably be a comparison (==), not an assignemnt (=) 
     { 
      el[1].click(); 
     } 
     else 
     { 
      break; 
     } 
    } 
    else if (el[0].length = 0) // should probably be a comparison (==), not an assignemnt (=). If so, will this condition every change during the loop, so that it will actually terminate at some time? 
    { 
     el[0].click(); 
    } 
    else 
    { 
     break; 
    } 
    var el = document.getElementsByClassName('_3hqu'); // This should probably be done before the loop, rather than in it. Otherwise, what will `el` be before this assignment? 
} 
Смежные вопросы