Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.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同时执行if和else_Javascript_If Statement - Fatal编程技术网

Javascript同时执行if和else

Javascript同时执行if和else,javascript,if-statement,Javascript,If Statement,这是我的密码: var srcArray = ["_images/overlook.jpg","_images/winery_sign.jpg","_images/lunch.jpg","_images/bigSur.jpg","_images/flag_photo.jpg","_images/mission_look.jpg"]; var myImg = document.getElementById("mainImage"); var imgIndex = 0; var status = f

这是我的密码:

var srcArray = ["_images/overlook.jpg","_images/winery_sign.jpg","_images/lunch.jpg","_images/bigSur.jpg","_images/flag_photo.jpg","_images/mission_look.jpg"];
var myImg = document.getElementById("mainImage");
var imgIndex = 0;
var status = false;

myImg.onclick = function () {
    if (status) {
        var collage = setInterval(changeSrc,1500);
        status = true;
    } else {
        clearInterval(collage);
        status = false;
    }
}

function changeSrc (){
    myImg.setAttribute("src",srcArray[imgIndex]);
    imgIndex++;
    if (imgIndex == srcArray.length) {
        imgIndex = 0;
    }
}
我试图做的是在未设置interval时设置interval on
changeSrc
,在设置interval时清除interval。我在Firebug中看到,浏览器执行
if
的第一部分,然后执行
else
的第二行(status=false)

当我点击图像时,一旦设置了间隔,它就会在同一图像上开始另一个间隔。它基本上只是每次点击都会运行得更快,而且不会停止

问题出在哪里


提前感谢您的帮助:)

函数更改src()
中更改状态,而不是在
if else
中更改
函数更改src()
中的状态,而不是在
if else
中执行此操作:

myImg.onclick = function () {
    if (status) {
        var collage = setInterval(changeSrc,1500);
    } else {
        clearInterval(collage);
    }
    status = !status;
}
在代码中,您未正确初始化状态

请执行以下操作:

myImg.onclick = function () {
    if (status) {
        var collage = setInterval(changeSrc,1500);
    } else {
        clearInterval(collage);
    }
    status = !status;
}

在您的代码中,初始化状态不正确

您的代码运行得很好。你必须改变:

if (status)

说明:如果编写
If(status==true)
,则只有status为true时,结果才会为true。但是,如果您写入
if(status)
,则对于与
false
null
空字符串
未定义值
0
不同的任何状态,结果都将为true


希望它有用

您的代码运行得很好。你必须改变:

if (status)

说明:如果编写
If(status==true)
,则只有status为true时,结果才会为true。但是,如果您写入
if(status)
,则对于与
false
null
空字符串
未定义值
0
不同的任何状态,结果都将为true


希望它有用

当您单击图像时,它开始滚动图像,第一个瞬间,而不是单击停止时的每个计时器。我想这是理想的效果。你不需要这个身份

var srcArray =     ["_images/overlook.jpg","_images/winery_sign.jpg","_images/lunch.jpg","_images/bigSur.jpg","_images/flag_photo.jpg","_images/mission_look.jpg"],
    myImg = document.getElementById("mainImage"),
    imgIndex = 0,
    tmr;

myImg.onclick = function () {

    // if tmr === undefined, start the rollover.
    if (!tmr) {

       // I call changeSrc() to give instant feedback on first click!
       changeSrc();


       tmr = setInterval(changeSrc,1500);

    // else if tmr has a value stop the rollover, make sure we set tmr to undefined.
    }else{

       clearInterval(tmr);
       tmr=undefined; !IMPORTANT
    } 
}

function changeSrc (){
   myImg.setAttribute("src",srcArray[imgIndex]);
   imgIndex++;
   if (imgIndex == srcArray.length) {
       imgIndex = 0;
}
}


当您单击图像时,它会启动图像滚动,第一个瞬间,而不是单击停止时按计时器滚动。我想这是理想的效果。你不需要这个身份

var srcArray =     ["_images/overlook.jpg","_images/winery_sign.jpg","_images/lunch.jpg","_images/bigSur.jpg","_images/flag_photo.jpg","_images/mission_look.jpg"],
    myImg = document.getElementById("mainImage"),
    imgIndex = 0,
    tmr;

myImg.onclick = function () {

    // if tmr === undefined, start the rollover.
    if (!tmr) {

       // I call changeSrc() to give instant feedback on first click!
       changeSrc();


       tmr = setInterval(changeSrc,1500);

    // else if tmr has a value stop the rollover, make sure we set tmr to undefined.
    }else{

       clearInterval(tmr);
       tmr=undefined; !IMPORTANT
    } 
}

function changeSrc (){
   myImg.setAttribute("src",srcArray[imgIndex]);
   imgIndex++;
   if (imgIndex == srcArray.length) {
       imgIndex = 0;
}
}


只需将拼贴变量从if语句中移出,因为当您将其声明到if语句中时,该变量将仅存在于该范围内

我不知道为什么bool不能用,这就是为什么我把它改成数字:p我希望其他人能回答这个问题

var myImg = document.getElementById("mainImage");
var imgIndex = 0;
var status = 1;
var collage;

myImg.onclick = function () 
{
    if(status == 1)
    {
        collage = setInterval(changeSrc,1500); 
        status = 0;
    }
    else
    {
        clearInterval(collage);
        status = 1;
    }
}

只需将拼贴变量从if语句中移出,因为当您将其声明到if语句中时,该变量将仅存在于该范围中

我不知道为什么bool不能用,这就是为什么我把它改成数字:p我希望其他人能回答这个问题

var myImg = document.getElementById("mainImage");
var imgIndex = 0;
var status = 1;
var collage;

myImg.onclick = function () 
{
    if(status == 1)
    {
        collage = setInterval(changeSrc,1500); 
        status = 0;
    }
    else
    {
        clearInterval(collage);
        status = 1;
    }
}


您需要声明
拼贴
与声明
状态
的位置相同-否则每次调用“click”处理程序时都会有一个新的
拼贴
变量,您将丢失旧的计时器句柄。您将
状态=true
状态=false
混淆。请注意,在
if(status)
中,您正在设置
status=true
,此时您应该说
status=false
,因为它已经是true了。对我来说,它似乎是
if(status){
永远不会执行您需要声明
拼贴
与您声明的
状态
相同的位置-否则每次“单击”时都会有一个新的
拼贴
变量处理程序被调用,您将丢失旧的计时器句柄。您将
状态=真
状态=假
混淆。请注意,在
if(status)
中,您正在设置
状态=真
,此时您应该说
状态=假
,因为它已经是真的。在我看来,它就像
if(status){
从未执行过非常感谢,它很有效!但如果您不介意的话,我有一个问题要问您。当我声明tmr的值为“undefined”时,为什么“!tmr”为真?还有一件事。计时器停止后,它不会再次启动。tmr返回值“2”…好的,我已经修复了代码并更新了我的答案。很抱歉,太晚了!它现在将重新启动。当我们清除间隔时,我们必须将tmr设置为未定义。(请参阅更新的代码和FIDLE)因此,当他们再次单击时!tmr===未定义,滚动重新启动。我认为这回答了您的问题为什么是2。我认为我的答案是问题的正确解决方案,而选择的答案不是,因为它不起作用。我认为应该选择我的答案,因为它正确解决了问题,起作用并解释了OP遇到的问题。非常感谢,它可以工作!但如果您不介意的话,我有一个问题要问您。当我声明tmr的值为“undefined”时,为什么“!tmr”为真?还有一件事。计时器停止后,它不会再次启动。tmr返回值“2”…好的,我已经修复了代码并更新了我的答案。很抱歉,太晚了!它现在将重新启动。当我们清除间隔时,我们必须将tmr设置为未定义。(请参阅更新的代码和FIDLE)因此,当他们再次单击时!tmr===未定义,滚动重新启动。我认为这回答了您的问题为什么是2。我认为我的答案是问题的正确解决方案,而选择的答案不是,因为它不起作用。我认为应该选择我的答案,因为它正确解决了问题,起作用并解释了OP遇到的问题。谢谢你,将拼贴var移出if helpedI我认为我的答案是正确的,因为它有效地解决了问题要求我们解决的问题。在评论中也被认为是正确和有效的。你是对的@MartinWebb,但这里重要的是相互帮助和学习。我完全同意,我的工作只是为了帮助他人解决问题,并从中学习自己。如果我发现我的本意不是帮助他人,我会纠正自己。谢谢。谢谢,将collage var移出if help。我认为我的答案是正确的,因为它起作用了,解决了问题要求我们解决的问题。它也被