основной вопрос по javascript:через 5 секунд установите переменной значение true

StackOverflow https://stackoverflow.com/questions/1740618

  •  20-09-2019
  •  | 
  •  

Вопрос

Я в основном пытаюсь выполнить следующее.Я хочу, чтобы через 5 секунд после загрузки страницы переменная установила значение true.

Как только значение станет истинным, оно перейдет к выдаче предупреждения "true"..на данный момент.

Если кто-то попытается нажать на кнопку раньше, чем через 5 секунд, это выдаст предупреждение false.

Вот что мне удалось напечатать.Это не совсем работает.Спасибо :)

http://pastebin.com/m799d3957

Это было полезно?

Решение

У вас есть правильная идея, но у вас есть небольшая проблема с областью видимости переменной.Чтобы уменьшить головные боли, действительно лучше отказаться от использования опции 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top