我不知道为什么,但下面的代码适用于Firefox但不适用于Google Chrome,为什么?这应该是标准的JS。
status = parseInt($('#input-status').val());
// status field is exactly equals to 0
if (status === 0) {
// do something, in Firefox the code reaches here, in Chrome NOT !
}
以下是如何在html中定义#input-status:
<input type="hidden" id="input-status" name="input-status" value="00">
在Chrome中,代码仅在我替换=== by ==。
时才有效有什么想法吗?
答案 0 :(得分:5)
我不确定为什么会这样,但我可以像这样重现:
status = parseInt($('#input-status').val(), 10);
test = parseInt($('#input-status').val(), 10);
console.log(typeof status); // string
console.log(typeof test); // number
我猜status
是浏览器预定义的,无法解析。
要使其工作,请使用var
在当前范围中定义新变量:
var status = parseInt($('#input-status').val(), 10);
if (status === 0) {
// this also works in chrome
}
修改强>
console.log(window.status === status); // true
似乎status
是对window.status
对象的引用,它改变了浏览器中的状态栏。
而且无法将其解析为数字。
@ Xotic750指出:
是的,在Chrome上,只要您将全局变量
status/window.status
设置为任意值window.status = {}
,它就会将其转换为字符串{value: "[object Object]", writable: true, enumerable: true, configurable: true}
jsfiddle课程:不要使用全局变量变量,使用var
使它们成为局部范围