Javascript.RU

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

.click() по элементам
Почему не работает .click() на элементе. Пробегаюсь по списку через цикл, нахожу нужный, ставлю ему click, но сам клик не срабатывает. Через debugger и напрямую (без цикла) все отлично работает
Ответить с цитированием
  #2 (permalink)  
Старый 15.11.2017, 01:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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

Сообщение от рони Посмотреть сообщение
Nikolay37,
где код?
let baseName = "apple,pineapple,translate".split(',') 
let i=0 
let n=0 
start() 
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() 
} 
} 
}
Ответить с цитированием
  #4 (permalink)  
Старый 15.11.2017, 08:42
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

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

Сообщение от ksa Посмотреть сообщение
Nikolay37, пример нужен полный, с хтмэлем...
Там авторизация через steam нужна, я сомневаюсь что вы так заморачиваться будете, или есть аккаунт от steam? Вообще с чем может быть связано?
Ответить с цитированием
  #6 (permalink)  
Старый 15.11.2017, 09:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Nikolay37
Там авторизация через steam нужна
Пример сам сделай тестовый и тут выложи. Какая тут авторизация?
Сообщение от Nikolay37
Вообще с чем может быть связано?
Вот на примере как раз все видно будет.
Ответить с цитированием
  #7 (permalink)  
Старый 15.11.2017, 09:17
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Nikolay37, пока не понятно зачем применяется рекурсивный вызов функции вместо обычного цикла...
Так же трижды используется
document.getElementsByClassName('name')
Ответить с цитированием
  #8 (permalink)  
Старый 15.11.2017, 09:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

start плохое имя для функции, может переименовать
Ответить с цитированием
  #9 (permalink)  
Старый 15.11.2017, 09:57
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,726

Сообщение от Nikolay37
Почему не работает .click() на элементе. Пробегаюсь по списку через цикл, нахожу нужный, ставлю ему click, но сам клик не срабатывает. Через debugger и напрямую (без цикла) все отлично работает
У вас в логике работы дырень.
Текущий код будет проверять только первый элемент выборки на соответствие его контента значению эл. массива 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()
    }

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

Сообщение от ksa Посмотреть сообщение
Nikolay37, пока не понятно зачем применяется рекурсивный вызов функции вместо обычного цикла...
Так же трижды используется
document.getElementsByClassName('name')
Рекурсия нужна для того, чтобы перечислять мои элементы из baseName
"Так же трижды используется"
document.getElementsByClassName('name')
[/quote]

Ну я могу в целом это в переменную записать, смысл не изменится
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавление класса всем родительским элементам списка Torawhite Элементы интерфейса 0 01.05.2015 22:06
Установить класс всем элементам с похожими именами, Id, элементам одного класса sergey_privacy Events/DOM/Window 12 27.01.2014 17:27
меню с действием .click и .hover через if / else vooduq jQuery 2 10.06.2013 18:29
Обращение к элементам с неизвестным id gJam Events/DOM/Window 21 02.08.2012 17:26
Как применить css ко всем элементам внутри блока MaxB jQuery 12 28.05.2010 07:56