Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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语句未按预期工作-innerHTML对所有语句保持不变_Javascript_If Statement_Conditional Statements_Innerhtml - Fatal编程技术网

Javascript 我的if-else语句未按预期工作-innerHTML对所有语句保持不变

Javascript 我的if-else语句未按预期工作-innerHTML对所有语句保持不变,javascript,if-statement,conditional-statements,innerhtml,Javascript,If Statement,Conditional Statements,Innerhtml,我试图找出为什么我的条件语句不能按预期工作。语句的else部分根本不起作用,因为它与else if语句保持相同。我试图用if/else来简化语句,但没有用。我真的很感激你能帮我弄清这个问题的真相 另外,在我的例子中,如果我想使用null语句,我必须将它用作字符串。另一个谜 这是我的密码: var name = prompt("Could you please tell me your name?"); var newP = document.createElement('p');

我试图找出为什么我的条件语句不能按预期工作。语句的else部分根本不起作用,因为它与else if语句保持相同。我试图用if/else来简化语句,但没有用。我真的很感激你能帮我弄清这个问题的真相

另外,在我的例子中,如果我想使用null语句,我必须将它用作字符串。另一个谜

这是我的密码:

var name = prompt("Could you please tell me your name?");
    var newP = document.createElement('p');
    newP.setAttribute('id', 'mainP');
    document.body.appendChild(newP);


    if(name == 'null' || '') {
        newP.innerHTML = "I'm just looking for Aname! " + String.fromCodePoint(0x1F612);
    }else if(name == 'Aname' || 'aname') {
        newP.innerHTML = 'Yes, I finally found Aname! ' + String.fromCodePoint(0x1F60D);
    }else {
        newP.innerHTML = "I'm just looking for Aname! " + String.fromCodePoint(0x1F612);
    }

您的else部分根本不工作,因为您在
if
条件下未正确使用
|
运算符

运算符用于组合两个不同的逻辑表达式

在您的例子中,
name=='null'
name==''
是两个不同的逻辑表达式

事实上,你只要
if..else
就是这样。如果名称是
Aname
Aname
,则执行If block,否则执行else block

   if(name == 'Aname' || name == 'aname') {
                             //^^^^^^^^^^ This was missing
        newP.innerHTML = 'Yes, I finally found Aname! ' + String.fromCodePoint(0x1F60D);
    }else {
        newP.innerHTML = "I'm just looking for Aname! " + String.fromCodePoint(0x1F612);
    }

即使您不需要两个条件(完全取决于您的需求),也可以使用
toLowerCase()
将名称转换为小写,并检查
aname
,如

   //Now this will execute if condition if name is aname, Aname, aName, AName ...    
   if(name.toLowerCase() == 'aname') {
        newP.innerHTML = 'Yes, I finally found Aname! ' + String.fromCodePoint(0x1F60D);
    }else {
        newP.innerHTML = "I'm just looking for Aname! " + String.fromCodePoint(0x1F612);
    }

您的else部分根本不工作,因为您在
if
条件下未正确使用
|
运算符

运算符用于组合两个不同的逻辑表达式

在您的例子中,
name=='null'
name==''
是两个不同的逻辑表达式

事实上,你只要
if..else
就是这样。如果名称是
Aname
Aname
,则执行If block,否则执行else block

   if(name == 'Aname' || name == 'aname') {
                             //^^^^^^^^^^ This was missing
        newP.innerHTML = 'Yes, I finally found Aname! ' + String.fromCodePoint(0x1F60D);
    }else {
        newP.innerHTML = "I'm just looking for Aname! " + String.fromCodePoint(0x1F612);
    }

即使您不需要两个条件(完全取决于您的需求),也可以使用
toLowerCase()
将名称转换为小写,并检查
aname
,如

   //Now this will execute if condition if name is aname, Aname, aName, AName ...    
   if(name.toLowerCase() == 'aname') {
        newP.innerHTML = 'Yes, I finally found Aname! ' + String.fromCodePoint(0x1F60D);
    }else {
        newP.innerHTML = "I'm just looking for Aname! " + String.fromCodePoint(0x1F612);
    }

将一个变量与多个值进行比较时,必须在单独的比较中进行,如下所示:

if(name='null'| | name==''){
}
当前,您的if语句正在计算与以下语句等效的值:

if((name='null')||''){
}

将一个变量与多个值进行比较时,必须在单独的比较中进行,如下所示:

if(name='null'| | name==''){
}
当前,您的if语句正在计算与以下语句等效的值:

if((name='null')||''){
}

这不是你应该如何使用逻辑或运算符。<代码>如果(name=‘null’‘name’==’’)< /代码> ETCK,请不要认为“NULL”是非名称。这会导致出现实际拥有该名称的人。当您确实需要检查
提示符
结果中的“空”值时,您可以这样做:
如果(name&&name.trim()){…}
。松散检查是可以的,因为
prompt
总是返回
null
或空字符串或有效字符串<当用户只输入空格时,检查是很好的。这不是你应该使用逻辑或运算符。<代码>如果(name=‘null’,‘name’=‘’’)< /代码> ETCK,请不要认为“NULL”是非名称。这会导致出现实际拥有该名称的人。当您确实需要检查
提示符
结果中的“空”值时,您可以这样做:
如果(name&&name.trim()){…}
。松散检查是可以的,因为
prompt
总是返回
null
或空字符串或有效字符串
.trim()
当用户只输入空格时,检查很好。实际上,他的语句当前的计算结果类似于
if(Boolean(name='null')| | Boolean('')){
而且因为JavaScript中的空字符串是falsy,这意味着它的计算结果为false,所以该条件不满足。@Linschlager我刚才正深入到运算符优先级文档中,因为感觉有些不舒服。谢谢你指出了这一点。是的,但是
'null'
的顺序是什么?实际上,他的语句目前正在计算中g到类似以下内容的
if(Boolean(name='null')| | Boolean(“”))){
而且因为JavaScript中的空字符串是falsy,这意味着它的计算结果为false,所以该条件不满足。@Linschlager我刚刚深入到运算符优先级文档中,因为感觉有些棘手。感谢您指出这一点。是的,但是
'null'
的顺序是什么?@Teemu,我更新了我的答案以支持null check,
name='null'
如果name的值为'null'将返回true为什么要在空检查中使用逻辑或?十个空格如何?可能不是一个好名字…@Teemu,我更新了我的答案以支持空检查,
name='null'
如果name的值为'null'将返回true为什么要在空检查中使用逻辑或全部?如何十个空格?可能不是个好名字。。。