javascript - if条件不影响div的显示

标签 javascript jquery css if-statement nan

我在 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 并且当它是NaNnull 它确实经历了第二个 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:

谢谢大家的帮助。因此,根据建议,我的代码现在将 undefinedvalues

分开
         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/

相关文章:

javascript - 为什么这个 promise 被拒绝了?

javascript - 更改 jquery 数据表列设置值

javascript - 如何将 ng-style 属性设置为等于对象值?

html - 我需要更新 CSS 才能上传新图片吗?

javascript - Angular, Karma (SystemJS) XHR 错误 (404 Not Found) - [Separate Src/Build]

javascript - 如何正确使用嵌套异步代码?

javascript - 使用 jQuery 读取 JSON 并通过 ID 匹配字段

javascript - 根据链接的内容更改输入字段值

javascript - 如何使用 jQuery 将 CSS 应用于 iframe?

image - 减少但不增加背景尺寸