Доступ к элементам DOM из setTimeout - PullRequest
0 голосов
/ 27 сентября 2019

Я новичок в javascript / jquery.Попытка собрать что-то для личного проекта. Как получить доступ к элементам, используя jquery из setTimeout.Я пытаюсь нажать кнопку через три секунды, и я попробовал следующее, например,

setTimeout((){$("#id1").click()}, 3000) Однако я не могу получить доступ ни к одному элементу из setTimeout.Я должен держать ссылку на элемент снаружи, а затем нажмите.

var ele = $("#id1");
setTimeout((){ele.click()}, 3000)

Как я могу получить доступ к элементам из setTimeout или setInterval

РЕДАКТИРОВАТЬ : у меня нет доступа ко всем элементам div и я не могусохранить в переменной или прикрепить его к таймауту, я должен нажать кнопку через 3 секунды.Другая кнопка будет доступна после нажатия этой кнопки.Вторая кнопка не скрыта, а просто недоступна.Поэтому мне нужно что-то вроде этого

$("#id1").click();
    setTimeout((){
    $("#id2").click();
    }, 3000);
}, 3000)

Ответы [ 5 ]

0 голосов
/ 29 сентября 2019

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

0 голосов
/ 27 сентября 2019

Вам просто не хватает оператора Arrow => .Проверьте это:

$(document).ready(function(){
  setTimeout(() =>{
  	console.log($("#id1"));
 }, 3000);
});
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>

<button id="id1">Click me</button>	

Или вы можете просто получить к нему доступ так:

setTimeout(() => console.log($("#id1")), 3000);
0 голосов
/ 27 сентября 2019

вы могли бы использовать .bind(null,somethinWithDom) в callbackFunction, и теперь у функции появился новый параметр (somethingWithDomBinded) => {}

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

0 голосов
/ 27 сентября 2019

Сначала у вас есть синтаксическая ошибка в вашем коде

ur Html

<button id="id1">Click</button>

ur jQuery

setTimeout(() => {
    var ele = $("#id1");
    ele.click(() => {
      console.log(ele.html())
    })
  }, 3000);

Внутри клика Вы должны вызвать другой функционал, и вы можетепоместите свою логику туда

0 голосов
/ 27 сентября 2019

Вы можете выполнить это поведение следующим образом:

HTML:

<button id="btnId">Click me</button>

JavaScript:

doSomething = () => {
    alert('button clicked 3 seconds ago');
};

functionOnClick = () => {
  setTimeout(doSomething, 3000);
}

const btn = document.getElementById('btnId');

btn.addEventListener('click', functionOnClick);

Вы можете проверить пример рабочего кода здесь .

Дайте мне знать, если у вас есть какие-либо вопросы, касающиеся этого образца кода и / или это поведение, которое вы 'ищем ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...