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>