我在 StackOverflow 上进行了搜索,但没有任何问题符合我的具体困境。我有一个带有 foo 类的 div,它通过 css 设置为 display: inline-block。
我希望当变量 temp 是一个数字或字符串时 foo 可见,但当它不是一个时不显示数字或字符串。
var temp;
if (temp !== undefined || temp !== null) {
temp = temp / 1000;
temp = temp + 'K';
$('.foo').css("display", "inline-block");
}
else {
$('.foo').css("display", "none");
}
当我运行这段代码时,“foo”根本不显示。
当我将代码更改为
var temp;
if (temp != undefined || temp != null) {
temp = temp / 1000;
temp = temp + 'K';
$('.foo').css("display", "inline-block");
}
if (temp == undefined || temp == NaN) {
$('.foo').css("display", "none");
}
foo 仍然全部设置为 display:"none"
我在每个 if 上运行了 console.log,当 temp 是一个值时它确实会通过第一个 if 并且当它是NaN 或null 它确实经历了第二个 if。但为什么仅 display: "none" 生效?
提前致谢。 - 对比
编辑 更改了第一个代码块中的代码
澄清一下,如果使用 .get 函数,temp 会不断重置为高于此值的新值:
var temp =this.model.get('custitem_temp');
并且此值已成功设置多次。我的一些控制台供引用:
temp is set using .get: 80000
temp inside FIRST IF: 80000
temp is set using .get: undefined
temp inside FIRST IF: undefined
temp is set using .get: undefined
temp inside FIRST IF: undefined
temp is set using .get: 80000
temp inside FIRST IF: 80000
temp is set using .get: undefined
temp inside FIRST IF: undefined
temp is set using .get: 80000
temp inside FIRST IF: 80000
temp is set using .get: undefined
...
等等。
EDIT02:
谢谢大家的帮助。因此,根据建议,我的代码现在将 undefined 和 values
分开 if (temp === undefined || temp === null) {
console.log("temp (should be undefined): " + temp)
console.log("inside IF");;
$('.foo').css("display", "none");
}
else {
console.log("temp (should be a value): " + temp)
console.log("inside ELSE: " + temp);
temp = temp / 1000;
temp = temp + 'K';
$('.foo').css("display", "inline-block");
console.log("after ELSE: " + temp);
}
控制台反射(reflect):
temp (should be a value): 80000
inside ELSE: 80000
after ELSE: 80K
temp (should be undefined): undefined
inside IF
temp (should be undefined): undefined
inside IF
temp (should be a value): 80000
inside ELSE: 80000
after ELSE: 80K
...
尽管如此,我仍然在 foo 上得到 display: none;
编辑 03:
我加了个console.log输出显示值:
if (temp === undefined || temp === null) {
console.log("temp (should be undefined): " + temp)
console.log("inside IF");
$('.foo').css("display", "none");
console.log( "display value: " + $('.foo').css('display') );
}
else {
console.log("temp (should be a value): " + temp)
console.log("inside ELSE: " + temp);
temp = temp / 1000;
temp = temp + 'K';
$('.foo').css("display", "inline-block");
console.log("after ELSE: " + temp);
console.log( "display value: " + $('.foo').css('display') );
}
我的控制台日志提供了一些有趣的见解: 像以前一样开始,除了说显示值是 undefined
temp (should be a value): 80000
inside ELSE: 80000
after ELSE: 80K
display value: undefined
temp (should be undefined): undefined
inside IF
display value: undefined
temp (should be undefined): undefined
inside IF
但是在大约 9 个循环之后它开始分配一个值来显示:
temp (should be a value): 80000
inside ELSE: 80000
after ELSE: 80K
display value: undefined
temp (should be undefined): undefined
inside IF
display value: none
temp (should be undefined): undefined
inside IF
display value: none
temp (should be a value): 80000
inside ELSE: 80000
after ELSE: 80K
display value: block
temp (should be undefined): undefined
inside IF
display value: none
有什么解释吗?
最佳答案
你检查过你的控制台了吗?您的第二个 if
语法错误。应该是这样的
if (tempMileageWarranty == undefined || tempMileageWarranty == NaN)'
复制粘贴错误放在一边...
.foo
被设置为 display: none;
因为 temp
未定义..
代码 var temp;
将使 temp
未定义(传递第二个 if
),因为它从未被赋值。
这可能是一些有用的读物:JavaScript checking for null vs. undefined and difference between == and ===
关于javascript - if条件不影响div的显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34504042/