0

我目前正在做一个网站。我想要它做的是当您加载页面时开始倒计时,并在 15 秒后出现一个按钮。

目前它在我的测试服务器和 jsFiddle 上完美运行。但是,当我将它移到我的网络服务器时,它不起作用。我查看了 Google Chrome 的控制台,我收到以下错误。

downloadButton.parentNode.replaceChild(newElement, downloadButton);
Uncaught TypeError: Cannot read property 'parentNode' of null

这是完整的代码(另见 jsFiddle http://jsfiddle.net/6zchq/

var downloadButton = document.getElementById('download');
var counter = 15;
var newElement = document.createElement('p');
newElement.innerHTML = 'Getting your file, please wait 15 seconds.';
var id;

downloadButton.parentNode.replaceChild(newElement, downloadButton);

id = setInterval(function() {
    counter--;
    if(counter < 0) {
        newElement.parentNode.replaceChild(downloadButton, newElement);
        clearInterval(id);
    } else {
        newElement.innerHTML = "Getting your file, please wait " + counter.toString() + " seconds.";
    }
}, 1000);

我确定这是一个简单的问题,我只是无法弄清楚为什么它不起作用。

任何帮助表示赞赏!

谢谢。

4

2 回答 2

3

尝试将您的代码包装在一个就绪函数中。

原因是真实网络服务器上的加载延迟意味着您尝试访问尚不存在的元素。

于 2013-02-22T18:22:14.497 回答
1

据推测,当 DOM 尚未完全加载且下载按钮元素尚不存在时,代码正在运行。要么在就绪/加载处理程序中运行代码,要么将 Javascript 放在页面body标签的底部,以便在页面的 HTML 之后加载。

于 2013-02-22T18:24:38.300 回答