Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.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 如果语句中包含3个或更多条件,则为Else if?_Javascript_Html_Three.js - Fatal编程技术网

Javascript 如果语句中包含3个或更多条件,则为Else if?

Javascript 如果语句中包含3个或更多条件,则为Else if?,javascript,html,three.js,Javascript,Html,Three.js,我已经试了很长一段时间了,似乎无法找出我做错了什么。第一个条件似乎也起作用,但第三个条件不起作用 function spriteAI1() { if (c2Sprite.position.x >= 30 && c2Sprite.position.x <= 450) { c2Sprite.translateX( -10 ); } else if (c2Sprite.pos

我已经试了很长一段时间了,似乎无法找出我做错了什么。第一个条件似乎也起作用,但第三个条件不起作用

function spriteAI1() {

                if (c2Sprite.position.x >= 30 && c2Sprite.position.x <= 450) { 
                c2Sprite.translateX( -10 );
                } else if (c2Sprite.position.x <= 30 && c2Sprite.position.x >= -450) {
                c2Sprite.translateX( 10 );
                } else if (c2Sprite.position.z = 30 && c2Sprite.position.x = 30) { 
                c2Sprite.remove;
                c2Sprite.clone;
                }
                else{}
            }   

            function spriteAI2() {

                if (c2Sprite.position.z >= 30 && c2Sprite.position.z <= 350) { 
                c2Sprite.translateZ( -10 );
                } else if (c2Sprite.position.z <= -30 && c2Sprite.position.z >= -350) {
                c2Sprite.translateZ( 10 );  
                } else if (c2Sprite.position.x = 30 && c2Sprite.position.z = 30) { 
                c2Sprite.remove;
                c2Sprite.clone;
                }
                else{}
            }   

错误为
分配中的左手无效
。但另一个函数的行基本相同,不会产生错误

我发现您的代码中有两个问题

首先,比较是使用
==
(双等号),而不是单个等号(即赋值)。这可能是你问题的根源

第二,最后两个条件匹配一组公共值(它们是相交的),如果
c2Sprite.position.x
等于30,它将进入第二个“if”。它将匹配第三个的条件,但不会运行它

确保始终定义分离良好的条件组(除非这是您想要的行为)

我只想说清楚:

if (x >= 30) {
    /* this matches 30 and above */
}
else if (x == 30) {
    /* this won't execute on x == 30, because it entered the first "if" */
}
你应该这样做:

if (x > 30) {
    /* this matches numbers strictly greater than 30, i.e. 31, 32, 33... */
}
else if (x == 30) {
    /* this will match x == 30 */
}
else {
    /* any other value for x */
}

您想要
=
(比较)而不是
=
(赋值,也是有效的表达式)这是运行时异常还是语法错误?@Bergi感谢您的帮助。这纠正了我的错误。在重新编写代码并添加console.log之后,我可以看到位置x和z都达到了30,但最后一个条件仍然没有触发。你知道为什么吗?我不知道是运行时还是语法对不起。太棒了,谢谢你的帮助。我已经重新编写了代码,但仍然无法让它触发第三个条件。我会这样做:
if(c2Sprite.position.z>30&&c2Sprite.position.z=-350){/*…*/}否则如果(c2Sprite.position.x==30&&c2Sprite.position.z==30){/*…*/}我不确定你说的是什么意思。对不起,我不熟悉使用表单。有什么东西我没看到。对不起,我误按了介绍键。现在看看。顺便说一句,第一个函数也有同样的问题,在前两个条件中执行严格的
x>30
x<30
,否则第三个函数将永远不会执行。谢谢。摆脱最后一个问题解决了。日志现在显示缩进消息。它仍然没有删除精灵,但我想我一定是使用了错误的three.js命令或其他东西。再次感谢你的帮助,use==not=这东西快把我累死了。你是个救命恩人。
if (x > 30) {
    /* this matches numbers strictly greater than 30, i.e. 31, 32, 33... */
}
else if (x == 30) {
    /* this will match x == 30 */
}
else {
    /* any other value for x */
}