Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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 共享JS变量在计时器上递增一次_Javascript_Html - Fatal编程技术网

Javascript 共享JS变量在计时器上递增一次

Javascript 共享JS变量在计时器上递增一次,javascript,html,Javascript,Html,以下是我正在尝试的函数: <p id="demo"></p> <p id="demo2"></p> <code> var xl = 0; window.onload = setInterval(plusone, 1000); function plusone(){ xl++; document.getElementById("demo").innerHTML = xl; } if (xl == 0){ document.getE

以下是我正在尝试的函数:

<p id="demo"></p>
<p id="demo2"></p>
<code>
var xl = 0;
window.onload = setInterval(plusone, 1000);
function plusone(){
xl++; document.getElementById("demo").innerHTML = xl;
}
if (xl == 0){
    document.getElementById("demo2").innerHTML = "zero";
}
else if (xl == 5){
        document.getElementById("demo2").innerHTML = "5";
}
else if (xl == 7){
        document.getElementById("demo2").innerHTML = xl;
}
else if (xl == 20){
        document.getElementById("demo2").innerHTML = xl;
}
else if (xl == 19){
        document.getElementById("demo2").innerHTML = xl;
}
else
{
document.getElementById("demo2").innerHTML = "na";
}
</code>
我的目标是根据递增的时间更改


这里的问题是,
if
语句不适用于递增的
xl

代码,只有在某些原因导致它运行时才会运行

if语句在文档首次加载时运行,因为它们在脚本中是内联的

然后,您运行的间隔会重复运行
plusone
函数,该函数会更改
xl
的值,但是您永远不会使用if语句重新运行代码


您应该将其放入函数中,并在需要时调用它。

您在未放置括号的情况下遇到了一些问题,并且您应该使用脚本标记而不是代码标记。 这是工作代码

var-xl=0; window.onload=setInterval(plusone,1000); 函数plusone(){ xl++; 如果(xl==0){ document.getElementById(“demo2”).innerHTML=“零”; } 否则如果(xl==5){ document.getElementById(“demo2”).innerHTML=“5”; } 否则如果(xl==7){ document.getElementById(“demo2”).innerHTML=xl; } 否则如果(xl==20){ document.getElementById(“demo2”).innerHTML=xl; } 否则如果(xl==19){ document.getElementById(“demo2”).innerHTML=xl; } 其他的 { document.getElementById(“demo2”).innerHTML=“na”; } }
您将条件语句放置在加载时调用的函数之外。对于这种工作,最好使用
开关箱
语句:

<p id="demo"></p>
<p id="demo2"></p>

<code>
    var xl = 0;
    // Anonymous function
    window.onload = function() {
               setInterval(plusone, 1000);
    }

    function plusone(){
        xl++; 
        document.getElementById("demo").innerHTML = xl;

        switch(xl) {
            case 0:
                document.getElementById("demo2").innerHTML = "zero";
                break;
            case 5:
                document.getElementById("demo2").innerHTML = "5";
                break;
            case 7: 
                document.getElementById("demo2").innerHTML = xl;
                break;
            case 20:
                document.getElementById("demo2").innerHTML = xl;
                break;
            case 19:
                document.getElementById("demo2").innerHTML = xl;
                break;
            default
                document.getElementById("demo2").innerHTML = "na";
        }
    }


</code>
谢谢你的回复

由于忘记了重新读取代码,我现在正在执行以下操作

<script>
var xl = 0;

window.onload = setInterval(plusone, 1000);
window.onload = setInterval(plustwo, 1000);


function plusone(){
xl++;
    document.getElementById("demo").innerHTML = xl;
}

function plustwo(){

if (xl == 0){
    document.getElementById("demo2").innerHTML = "zero";
}
else if (xl == 2){
        document.getElementById("demo2").innerHTML = "5";
}
else if (xl == 3){
        document.getElementById("demo2").innerHTML = xl;
}
else if (xl == 4){
        document.getElementById("demo2").innerHTML = xl;

} 
else if (xl == 5){
        document.getElementById("demo2").innerHTML = xl;
}
else
{
document.getElementById("demo2").innerHTML = "na";
}
}
</script>

var-xl=0;
window.onload=setInterval(plusone,1000);
window.onload=setInterval(plustwo,1000);
函数plusone(){
xl++;
document.getElementById(“demo”).innerHTML=xl;
}
函数plustwo(){
如果(xl==0){
document.getElementById(“demo2”).innerHTML=“零”;
}
否则如果(xl==2){
document.getElementById(“demo2”).innerHTML=“5”;
}
否则如果(xl==3){
document.getElementById(“demo2”).innerHTML=xl;
}
否则如果(xl==4){
document.getElementById(“demo2”).innerHTML=xl;
} 
否则如果(xl==5){
document.getElementById(“demo2”).innerHTML=xl;
}
其他的
{
document.getElementById(“demo2”).innerHTML=“na”;
}
}

正如他们在评论中所说,这是错误的:

window.onload = setInterval(plusone, 1000);
此处不使用window.onload,因为它是setInterval的返回值,而不是设置的函数,请使用以下匿名函数:

window.onload = function() { setInterval(plusone, 1000);}
然后if语句只执行一次,因为它不是plusOne方法的一部分(检查括号),所以一旦解析器通过main,它只执行一次

<p id="demo"></p>
<p id="demo2"></p>

<script> 
var xl = 0;
// Proper use of anonymous function for window.onload
window.onload = function() { 
       setInterval(plusone, 1000);
}
function plusone(){
    xl++;
    document.getElementById("demo").innerHTML = xl;

    if (xl == 0){
        document.getElementById("demo2").innerHTML = "zero";
    }
    else if (xl == 5){
        document.getElementById("demo2").innerHTML = "5";
    }
    else if (xl == 7){
        document.getElementById("demo2").innerHTML = xl;
    }
    else if (xl == 20){
        document.getElementById("demo2").innerHTML = xl;
    }
    else if (xl == 19){
        document.getElementById("demo2").innerHTML = xl;
    }
    else
    {
    document.getElementById("demo2").innerHTML = "na";
    }
}
</script>

var-xl=0; //正确使用window.onload的匿名函数 window.onload=函数(){ 设定间隔(plusone,1000); } 函数plusone(){ xl++; document.getElementById(“demo”).innerHTML=xl; 如果(xl==0){ document.getElementById(“demo2”).innerHTML=“零”; } 否则如果(xl==5){ document.getElementById(“demo2”).innerHTML=“5”; } 否则如果(xl==7){ document.getElementById(“demo2”).innerHTML=xl; } 否则如果(xl==20){ document.getElementById(“demo2”).innerHTML=xl; } 否则如果(xl==19){ document.getElementById(“demo2”).innerHTML=xl; } 其他的 { document.getElementById(“demo2”).innerHTML=“na”; } }
为什么不在PlusOne中移动所有if-else if?这些ifs也需要在时间上重新评估为什么所有JavaScript都在
元素中<代码>window.onload=setInterval(plusone,1000)-将
setInterval
(表示间隔的数字)的返回值指定给
onload
(必须是函数)没有意义。
<p id="demo"></p>
<p id="demo2"></p>

<script> 
var xl = 0;
// Proper use of anonymous function for window.onload
window.onload = function() { 
       setInterval(plusone, 1000);
}
function plusone(){
    xl++;
    document.getElementById("demo").innerHTML = xl;

    if (xl == 0){
        document.getElementById("demo2").innerHTML = "zero";
    }
    else if (xl == 5){
        document.getElementById("demo2").innerHTML = "5";
    }
    else if (xl == 7){
        document.getElementById("demo2").innerHTML = xl;
    }
    else if (xl == 20){
        document.getElementById("demo2").innerHTML = xl;
    }
    else if (xl == 19){
        document.getElementById("demo2").innerHTML = xl;
    }
    else
    {
    document.getElementById("demo2").innerHTML = "na";
    }
}
</script>