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

Сообщение от Nexus Посмотреть сообщение
У вас в логике работы дырень.
Текущий код будет проверять только первый элемент выборки на соответствие его контента значению эл. массива basename.
Попробуйте так:
let baseName = "apple,pineapple,translate".split(',')
let i = 0
let n = 0
let nodes = document.getElementsByClassName('name');
console.log('Найдено элементов: ' + nodes.length);
start()

function start() {
    for (i; i < nodes.length; i++) {
        console.log(nodes[i].innerText + ' == ' + baseName[n] + ' -> ' +
            (nodes[i].innerText == baseName[n] ? 'true' : 'false'));
        if (nodes[i].innerText == baseName[n]) {
            console.log('CLICK');
            nodes[i].click();
            break; //Если нужно кликнуть только по одному элементу
        }
    }
    if (n < baseName.length - 1) {
        i = 0
        n++
        console.log('Restart');
        start()
    }

}
В логике все хорошо, поскольку нужно проверить несколько элементов. С break скрипт начинает отлично работать, но это не то что нужно, поскольку надо кликнуть по нескольким элементам.

Кстати прошу заметить, ваш код тоже не работает, если убрать оттуда break
Ответить с цитированием