2014-02-12 1 views
2

Я не знаю почему, но приведенный ниже код работает в Firefox, но НЕ в Google Chrome, почему? Это должно быть стандартное JS.Операция сравнения === Не работает в Chrome?

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 type="hidden" id="input-status" name="input-status" value="00"> 

В Chrome код работает только тогда, когда я заменить === на ==.

Любые идеи?

+5

Do 'console.log (typeof status);' перед утверждением if - что говорит Chrome, тип? –

+0

Вы уверены, что хром успешно разбирает строку? Потому что это, кажется, проблема. – ppoliani

+3

[Я не думаю, что ваша оценка верна.] (Http://jsfiddle.net/UdUss/) – Pointy

ответ

5

Я не знаю, почему это происходит, но я могу воспроизвести это так:

jsfiddle

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 
} 

EDIT

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 чтобы сделать их локально областью

+0

Отлично, добавив 'var' решает его! :) – delphirules

+0

Большое спасибо! – delphirules

+0

@ delphirules Рад, что я могу вам помочь. – enyce12

Смежные вопросы