【发布时间】:2016-04-02 22:10:22
【问题描述】:
我在 StackOverflow 上进行了搜索,但没有任何问题符合我的具体困境。我有一个类 foo 的 div,它通过 css 设置为 display: inline-block。 p>
我希望 foo 在变量 temp 是数字或字符串时可见,但 不显示 当它不是数字或字符串。
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 是一个值时,它确实会通过first if 以及当它是 NaN 或 null em> 它确实经历了 second if。但是为什么ONLY display: "none" 会生效呢?
提前谢谢你。 - VS
编辑 在第一个代码块中更改第一个代码
澄清一下,如果使用 .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);
}
和控制台反映:
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
...
尽管如此,我仍然得到 display: none; on foo
编辑 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
有什么解释吗?
【问题讨论】:
-
你在哪里为
temp赋值? -
这是否包含在
.ready()函数中? -
var temp;将temp的值设置为null。 (除非您在两者之间分配值)。 -
我在 if 条件之前被赋值给 temp...这是使用 NetSuite 的专有系统的更改版本。不需要 .ready() ,因为这是通过 gulp 缩小到主 js 文件然后被加载的。 “temp”在页面上多次加载值,此脚本用于评估“foo”在页面上的显示。
-
@AndrewBrooke,是的,我只是想说,它相当于
null,所以temp != undefined || temp != null应该始终为假。
标签: javascript jquery css if-statement nan