Javascript 我的if-else语句未按预期工作-innerHTML对所有语句保持不变
我试图找出为什么我的条件语句不能按预期工作。语句的else部分根本不起作用,因为它与else if语句保持相同。我试图用if/else来简化语句,但没有用。我真的很感激你能帮我弄清这个问题的真相 另外,在我的例子中,如果我想使用null语句,我必须将它用作字符串。另一个谜 这是我的密码: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');
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为什么要在空检查中使用逻辑或全部?如何十个空格?可能不是个好名字。。。