javascript setTimeoutä¸æŒ‰æˆ‘çš„æ„料行事

时间:2012-02-29 16:40:57

标签: javascript settimeout

function myfunction()
  {
  window.setTimeout(alert('I waited for you.'),700000000);
  }

我打电è¯ç»™è¿™æ ·çš„功能,我立å³å¾—到警告说“我等你了â€ã€‚

我最åˆæŠŠ7000作为第二个å‚数,但是如果它是除了秒之外的东西,它还是继续推动它。我显然希望函数能够åšå…¶ä»–事情,但我把它分解为这个简å•çš„例å­æ¥å‘我自己è¯æ˜Žé—®é¢˜æ‰€åœ¨ã€‚

我的错误是什么?

6 个答案:

答案 0 :(得分:3)

你必须传递一个函数引用,而ä¸æ˜¯åƒè¿™æ ·æ‰§è¡Œalert()的结果:

function myfunction() {
    window.setTimeout(function() {alert('I waited for you.')},700000000);
}

当您将alert('I waited for you.')传递给setTimeout()时,您告诉javascript解释程åºæ‰§è¡Œalert('I waited for you.'),然åŽå°†è¿”回结果传递给setTimeout()。由于这会立å³æ‰§è¡Œalert()语å¥å¹¶ä¸”警报ä¸ä¼šè¿”回setTimeout()使用的函数,这显然ä¸æ˜¯æ‚¨æƒ³è¦çš„。

相å,您希望将函数引用传递给setTimeout()。这å¯ä»¥ä½¿ç”¨åŒ¿å函数完æˆï¼Œå¦‚上é¢æ供的示例,也å¯ä»¥ä½¿ç”¨å•ç‹¬çš„命å函数完æˆï¼Œå¦‚下所示:

function myAlert() {
    alert('I waited for you.');
}

function myfunction() {
    window.setTimeout(myAlert, 700000000);
}

注æ„:对于更高级的用法,åªè¦è¯¥å‡½æ•°è¿”回setTimeout()ç¨åŽå¯ä»¥è°ƒç”¨çš„函数引用,您实际上å¯ä»¥å°†ç«‹å³æ‰§è¡Œçš„函数传递给setTimeout()。但是,这显然ä¸æ˜¯æ‚¨åœ¨alert()

å°è¯•ä½¿ç”¨çš„用法

答案 1 :(得分:2)

试试这个

function myfunction() {
  window.setTimeout( function(){alert('I waited for you.');}, 700000000);
}

在您的代ç ä¸­ï¼Œç«‹å³è°ƒç”¨å‡½æ•°è­¦æŠ¥ã€‚如果你想ç¨åŽæ‰§è¡Œï¼Œä½ åº”该传递对函数的引用而ä¸æ˜¯å‡½æ•°è°ƒç”¨setTimeout。

答案 2 :(得分:2)

你应该åš

function makeAlert(){
  alert('I waited for you.')
}

window.setTimeout(makeAlert,700000000);

å¦åˆ™ç«‹å³æ‰§è¡Œalert()

答案 3 :(得分:2)

将其包装在匿å函数中:

function myfunction(){
    window.setTimeout(function(){alert('I waited for you.')},700000000);
}

这是一个 example jsFiddle (更容易管ç†çš„3秒延迟)。

答案 4 :(得分:-1)

您å¯ä»¥ç®€å•åœ°å°†alert('I waited for you.')包裹在引å·"中:

function myfunction() 
  { 
  window.setTimeout("alert('I waited for you.')",7000); 
  } 

数字是等待的毫秒数,因此7000是7秒。

请å‚阅http://jsfiddle.net/Ac5Xf/

答案 5 :(得分:-2)

我å‘现如果我在第一个å‚数周围加上引å·ï¼Œå®ƒå°±å¯ä»¥äº†ã€‚这就是我实际åšçš„事情:

function divhide()
  {
  window.setTimeout("realhide()",7000);
  }

function realhide(){
  var mydiv = document.getElementById("mydiv");
  mydiv.style.display="none";
  mydiv.innerHTML="";
}