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

Posted

技术标签:

【中文标题】我的 if else 语句未按预期工作-所有语句的 innerHTML 保持不变【英文标题】:My if else statement is not working as intended - innerHTML remaining the same for all statements 【发布时间】:2020-06-13 11:56:58 【问题描述】:

我试图找出为什么我的条件语句没有按预期工作。语句的 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);
    

【问题讨论】:

这不是你应该使用逻辑或运算符的方式。 if (name == 'null' || name == '') 请,不要将“null”视为非名称。这会导致实际具有该名称的人great misery。 当您确实需要检查 prompt 结果中的“空”值时,您可以这样做:if (name && name.trim()) ...。松散的检查是可以的,因为prompt 总是返回null 或空字符串或有效字符串。 .trim() 仅当用户输入空格时检查很好。 【参考方案1】:

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

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


目前,您的 if 语句正在评估以下语句的等效项:

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



【讨论】:

实际上,他的声明目前正在评估类似 if(Boolean(name == 'null') || Boolean(''))) 的内容,并且由于 javascript 中的空字符串是虚假的,这意味着它评估为 false,因此不满足条件。 @Linschlager 我只是深入研究运算符优先级文档,因为有些东西感觉很痒。感谢您指出这一点。 是的,但是 'null' 的哪个顺序尊重 ..?【参考方案2】:

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

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

在您的情况下,name == 'null'name == '' 是两个不同的逻辑表达式。

其实你只是if..else 就是这样。如果名称是Anameaname,则执行 if 块,否则执行 else 块

   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);
    

【讨论】:

@Teemu,我更新了我的答案以支持空检查,name == 'null' 将返回 true 如果名称的值为 'null'' 为什么要在空检查中使用逻辑或根本?十个空格怎么样?可能不是一个好名字...

以上是关于我的 if else 语句未按预期工作-所有语句的 innerHTML 保持不变的主要内容,如果未能解决你的问题,请参考以下文章

If 语句和 else 没有按预期工作[关闭]

Sql 语句:在要插入的字段中未指定主键时,插入键更新未按预期工作

std::find 条件语句未按预期工作

嵌套的 if else 语句无法通过目标单元格工作

在 if/else PHP 语句中使用 'and' 和 'or'

try/catch 的 Bash 模拟未按预期工作