2015-09-24 57 views
0

javascript新手在这里,但我想知道是否有可能在用户点击HTML链接后设置超时,现在我想知道这是因为我正在做一个简单的数学游戏,它使用警报方法,这意味着一旦用户点击链接,链接所在的页面仍然可以在背景中看到,这看起来不太好。我环顾四周,发现了一个名为“window.setTimeout”的方法,我想知道是否可以将该方法绑定到HTML代码中的定位标记。谢谢:)用户点击HTML链接后可以设置超时吗?

我的代码:(注游戏还没有结束:))

<html> 
 
<head> 
 
    <title>Maths Game 0.1 Beta</title> 
 
    <link rel="stylesheet" type="text/css" href="styling.css"> 
 
    <script type="text/javascript"> 
 
    var num1 = prompt("What is 2x10?"); 
 
    if (num1 == '20') { 
 
     alert("Nice Job!"); 
 

 
    } else { 
 
     alert("Oh well, try again."); 
 
    } 
 
    </script> 
 
</head> 
 
<body> 
 
</body> 
 
</html>

+1

是的,这是可能的。搜索谷歌搜索“javascript为链接添加超时” –

+0

您无法用超时中断'prompt()'。你需要为此使用HTML对话框。 – Barmar

+0

感谢大家的回复,从未有人在任何论坛上快速回复我。 –

回答

1

例如,如果你在你的HTML一个<a id="foo" href="#"> </a>,一旦能做到

document.getElementById("foo").onclick = function() { 
    setTimeout(function() { 
     // do stuff 
    }, 5000); // triggers the callback after 5s 
}; 
+0

嗨,我已经尝试了大多数这些方法,并且在测试之后出现同样的问题,单击链接,提示不显示。 –

0

试试这个:

<html> 
    <head> 
    <title> Maths Game 0.1 Beta</title> 
    </head> 
    <body> 
    <a href="#" onclick="setTimeout('question()', 5000);">First Question</a> 
    <script type="text/javascript"> 
    function question(){ 
    var num1 = prompt("What is 2x10?"); 
    if (num1=='20'){ 
     alert ("Nice Job!"); 
    } 
     else {alert ("Oh well, try again.");} 
    } 
    </script> 
    </body> 
</html> 

小提琴: http://jsfiddle.net/h7xpxzgg/

0

如果我理解正确的话,你要实际加载新的一页,然后警报弹出,对不对?

那么,一旦用户离开了你的页面,超时将不会运行。

但至少有两种方法可以做到你的要求:

  1. 假页面。
    您可以包含当前页面上的“下一页”上的所有内容,但用display:none隐藏该内容,并且一旦用户单击链接,首先使原始页面的内容不可见,然后将内容显示“下一个”页面,然后显示警报。

  2. 将值传递到下一页,并在那里执行警报。
    因为这是所有客户端,我建议使用window.location.hash,像

    在当前页面:

    <script> 
    document.write('<a href="next_page.html#' + prompt('What is 2x10?') + '">Next page</a>'); 
    </script> 
    

    在接下来的页面:

    <script> 
    var num1 = window.location.hash.substr(1); // To get rid of the # 
    if(num1 == '20') 
    { 
        alert("Nice Job!"); 
    } 
    else 
    { 
        alert("Oh well, try again."); 
    } 
    </script>