我的 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
就是这样。如果名称是Aname
或aname
,则执行 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 保持不变的主要内容,如果未能解决你的问题,请参考以下文章
Sql 语句:在要插入的字段中未指定主键时,插入键更新未按预期工作