Показать сообщение отдельно
  #16 (permalink)  
Старый 15.11.2017, 13:17
Аспирант
Отправить личное сообщение для Nikolay37 Посмотреть профиль Найти все сообщения от Nikolay37
 
Регистрация: 27.02.2017
Сообщений: 65

Сообщение от Nexus Посмотреть сообщение
Что тут хорошего?
Вы пытаетесь в 6-й строке пробежаться по всем элементам с классом "name", но сразу же в конце первой итерации вызываете эту функцию вновь сбрасывая счетчик "i" и инкрементируя значение "n". Т.е. при втором вызове этой функции проверяться будет снова первый элемент с классом "name", но уже искомое значение будет другим.
После того, как счетчик "n" превысит baseName.length продолжат выполняться предыдущие циклы. Они будут проверять соответствие контента элементов (начиная со второго и до конца) с классом "name", но т.к. n==baseName.length, то искать циклы будут элемент, чей контент равен null. Т.е. условие для элементов с индексом > 1 никогда не выполнится, поскольку строка никогда не будет равна null (равна !== эквивалентна).

Upd. [][1]===undefined, т.е. в тексте выше "null" читайте как "undefined", но сути не меняет.
Прошу прощенья, ошибся чутка, вот правильный код, который я использовал. Сначала не увидел ошибки:

let baseName = "apple,pineapple,translate".split(',')
let i = 0
let n = 0

function start() {
    for (i; i < document.getElementsByClassName('name').length; i++) {
        if (document.getElementsByClassName('name')[i].innerText == baseName[n]) {
            document.getElementsByClassName('name')[i].click()
        }
}

        if (n < baseName.length - 1) {
            i = 0
            n++
            start()
        }
}


Если открыть debugger в начале исполнения фун-и, то она работает хорошо и клик по элементу срабатывает

Последний раз редактировалось Nikolay37, 15.11.2017 в 13:22.
Ответить с цитированием