为什么我的JavaScript倒计时功能没有做任何事情?

时间:2009-07-15 00:14:59

标签: javascript

我找到了这个脚本:

<script language="Javascript" TYPE="text/javascript">
var container = document.getElementById('dl');
var seconds = 10;
var timer;
function countdown() {
    seconds--;
    if(seconds > 0) {
       container.innerHTML = 'Please wait <b>'+seconds+'</b> seconds..';
    } else {
       container.innerHTML = '<a href="download.php">Download</a>';
       clearInterval(timer);
  }
}
timer = setInterval(countdown, 1000);
</script>

我想用它来调用它:

<input type="button" onclick="countdown()" id="dl" value="Download" />

但没有任何反应。我究竟做错了什么?我启用了JavasScript,但单击按钮后没有任何反应。

3 个答案:

答案 0 :(得分:1)

我通过将输入类型放在div标签中来修复您发布的代码,因此一旦您单击它并且计时器启动它就会删除“下载”按钮。

<div id="dl">
  <input type="button" onclick="setInterval(countdown, 1000);" id="dl" value="Download" />
</div>
<script language="Javascript" TYPE="text/javascript">
    var container = document.getElementById('dl');
    var seconds = 10;
    var timer;
    function countdown() {
        seconds--;
        if(seconds > 0) {
           container.innerHTML = 'Please wait <b>'+seconds+'</b> seconds..';
        } else {
           container.innerHTML = '<a href="File or Page Location">Download File</a>';
           clearInterval(timer);
        }
    }
</script>

答案 1 :(得分:0)

脚本使用setInterval函数调用启动,并使用innerHTML属性将倒计时分配给元素。

如果要在按钮中显示,则应使用元素的value属性并更改行为(即:链接在那里不起作用)或使用span或div元素代替按钮。

答案 2 :(得分:0)

一些事情。首先,如果脚本是在html之前声明的,那么你可能会在getElementById调用上遇到错误,因为该元素尚未呈现。访问dom元素时,必须在加载dom后执行此操作,或者(最好)通过在绑定到文档onload事件的函数中运行脚本来执行此操作。

你的另一个问题是,一旦评估了代码,你对setInterval的调用会立即关闭倒计时,而你不希望它在按钮点击之前启动。试试这个:

<div id="dl"></div>
<input type="button" onclick="setInterval(countdown, 1000);" id="dl" value="Download" />

<script language="Javascript" TYPE="text/javascript">
var container = document.getElementById('dl');
var seconds = 10;
var timer;
function countdown() {
    seconds--;
    if(seconds > 0) {
       container.innerHTML = 'Please wait <b>'+seconds+'</b> seconds..';
    } else {
       container.innerHTML = '<a href="download.php">Download</a>';
       clearInterval(timer);
  }
}
</script>

请注意,这不是很好的代码,但由于缺乏有关您网页的详细信息或您正在做的其他事情,这至少应该让您前进。