основной вопрос по javascript:через 5 секунд установите переменной значение true
-
20-09-2019 - |
Вопрос
Я в основном пытаюсь выполнить следующее.Я хочу, чтобы через 5 секунд после загрузки страницы переменная установила значение true.
Как только значение станет истинным, оно перейдет к выдаче предупреждения "true"..на данный момент.
Если кто-то попытается нажать на кнопку раньше, чем через 5 секунд, это выдаст предупреждение false.
Вот что мне удалось напечатать.Это не совсем работает.Спасибо :)
Решение
У вас есть правильная идея, но у вас есть небольшая проблема с областью видимости переменной.Чтобы уменьшить головные боли, действительно лучше отказаться от использования опции string eval на setTimeout
(я знаю, это показано в руководствах по всему Интернету) и используйте анонимную функцию:
var link;
function loading(){
setTimeout(function(){
link = true;
}, 5000);
}
Таким образом, вы будете точно знать, где link
объявлен, и область применения кристально ясна.
Другие советы
Попробуй это:
setTimeout(function() { window.link = true; }, 5000);
Это установит глобальной переменной "link" значение true через 5 секунд, что удовлетворит вашему заявлению if.
Редактировать Это может быть немного сложно, если вы новичок, но лучший способ добиться этого - использовать function-scope, а не global scope.
В вашем случае объявите функцию таймера следующим образом:
var timer = (function () {
var link = false;
setTimeout(function() { link = true; }, 5000);
return function() {
alert(link);
};
}());
Таким образом, анонимная функция возвращает другую функцию, которая становится timer() , но таким образом timer получает доступ к своей "частной" переменной link.Для получения дополнительной информации ознакомьтесь с Статья Mozilla о области видимости переменной JavaScript