【问题标题】:Calling a Javascript function with onClick使用 onClick 调用 Javascript 函数
【发布时间】:2013-10-10 20:09:21
【问题描述】:

谁能告诉我为什么这个计时器:

function timer() {
 var counter = 0,
 cDisplay = document.getElementById("counter");
 format = function(t) {
     var hours = Math.floor(t/360000),
         minutes = Math.floor( (t/6000) % 60),
         seconds = Math.floor( (t/100) % 60),
         ms = (Math.floor(t % 100)/100).toFixed(2);
     if (t<6000) { 
         cDisplay.innerHTML = seconds + ms.substring(1); 
     } else if (t<360000) {
         seconds = (seconds < 10) ? "0" + seconds.toString() : seconds.toString();
         cDisplay.innerHTML = minutes + ":" + seconds + ms.substring(1);
     } else {
         minutes = (minutes < 10) ? "0" + minutes.toString() : minutes.toString();
         seconds = (seconds < 10) ? "0" + seconds.toString() : seconds.toString();
         cDisplay.innerHTML = hours + ":" + minutes + ":" + seconds + ms.substring(1); 
     }
 };
 setInterval(function() {
    counter++;
    format(counter);
 },10);
}

当我点击这个标签时不会启动:

<label onClick="timer()" id="counter">Start Timer</label>

我可以通过在整个函数周围加上括号并在末尾加上分号来使其自动加载,如下所示:

http://jsfiddle.net/UHjas/

但我不知道为什么它不会加载 onClick="timer()"。我觉得我错过了一些很明显的东西,但我就是看不到它

【问题讨论】:

  • 可能是 onclick 而不是 onClick

标签: javascript


【解决方案1】:

它正在工作。

将 jsfiddle 包含脚本的方式从 onLoad 更改为 No wrap - in &lt;head&gt;

演示:http://jsfiddle.net/UHjas/3/

基本上timer() 不在全局范围内(检查 jsfiddle iframe 源)

【讨论】:

  • 谢谢!它现在完美运行。我以前从未在 jsfiddle 中使用过该选项
【解决方案2】:

这是因为您在 load 事件中定义了函数,所以它只能在该范围内使用。

将设置更改为No wrap - in &lt;head&gt; 以在全局范围内定义函数。

http://jsfiddle.net/UHjas/1/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-15
    • 1970-01-01
    相关资源
    最近更新 更多