Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Chrome扩展下拉列表中显示倒计时_Javascript_Google Chrome Extension_Google Chrome App - Fatal编程技术网

Javascript 在Chrome扩展下拉列表中显示倒计时

Javascript 在Chrome扩展下拉列表中显示倒计时,javascript,google-chrome-extension,google-chrome-app,Javascript,Google Chrome Extension,Google Chrome App,我试图在分机的下拉列表中显示倒计时,但我有两个问题: A) 我的脚本返回一个错误,因为它无法从下拉列表的内容中按id获取元素 B) 即使关闭下拉列表并重新打开,如何保持倒计时运行 这是我的JS: // variables for time units var days, hours, minutes, seconds; // get tag element var countdown = document.getElementById("countdown"); // update the

我试图在分机的下拉列表中显示倒计时,但我有两个问题:

A) 我的脚本返回一个错误,因为它无法从下拉列表的内容中按id获取元素

B) 即使关闭下拉列表并重新打开,如何保持倒计时运行

这是我的JS:

// variables for time units
var days, hours, minutes, seconds;

// get tag element
var countdown = document.getElementById("countdown");

// update the tag with id "countdown" every 1 second
setInterval(function () {

    // find the amount of "seconds" between now and target
    var current_date = new Date().getTime();
    var seconds_left = (target_date - current_date) / 1000;

    // do some time calculations
    days = parseInt(seconds_left / 86400);
    seconds_left = seconds_left % 86400;

    hours = parseInt(seconds_left / 3600);
    seconds_left = seconds_left % 3600;

    minutes = parseInt(seconds_left / 60);
    seconds = parseInt(seconds_left % 60);

    // format countdown string + set tag value
    countdown.innerHTML = days + "d, " + hours + "h, "
    + minutes + "m, " + seconds + "s";  

}, 1000);
在HTML中,我有:

<span id="countdown"></div>

我得到的错误是: 未捕获类型错误:无法将属性“innerHTML”设置为null

非常感谢您的帮助!谢谢

A)我怀疑您的代码(在脚本中)放在“头”部分的某个地方。在这种情况下,您需要做的就是将所有代码放在
window.onload=function(){…}
domcontentload
侦听器中

B) 这更复杂。我认为最好的解决方案是在后台页面创建计数器,并每秒将消息发送到弹出页面。

谢谢!在A)的情况下,我在加载元素后将脚本放在主体中,从而解决了问题。但我怀疑你的建议也一样好。关于B)我会试试看它是否有效。谢谢你迄今为止的帮助!