2015-01-26 2 views
1

Когда я вернулся на работу этим утром, я мог перезагрузить и увидеть странное поведение, после перезапуска сервера его не было. Я не могу его воссоздать. Поэтому вопрос «разрешен», не стесняйтесь его удалять, я не уверен, разрешено ли мне это делать.JavaScript оценивает по-разному каждый раз

Я пытаюсь вернуть window и document высоту при событии изменения размера. На основе их значения, я пытаюсь сделать следующее, используя если/другое заявление (очень простой, но это, кажется, не работает, поэтому я зарегистрировал данные):

Внутри заявление if Я вошедшего "TRUE [number one] >= [number two]" внутри else заявление Я зарегистрировал "FALSE [number one] >= [number two]". Это было вызвано событием изменения размера окна. Затем я изменил размер окна по горизонтали, поэтому значения высоты не изменяются. При наличии двух одинаковых чисел я предположил, что она всегда регистрирует TRUE, часть, но выход:

[...] 
TRUE 548 >= 548 
FALSE 548 >= 548 
TRUE 548 >= 548 
FALSE 548 >= 548 
TRUE 548 >= 548 
FALSE 548 >= 548 
TRUE 548 >= 548 
FALSE 548 >= 548 
[...] 

типа значения всегда «число», это всегда целое число, не поплавок. Я также «тестировал» в IE9 и FF35.

Может кто-нибудь объяснить, что происходит? Как я могу избежать такого поведения?

Спасибо!

EDIT: Мой первоначальный вопрос был отредактирован. Все хорошо. улучшить мой английский (я все еще изучаю язык), но теперь вопрос другой, как вы видите в первом ответе. Я не спрашивал, как получить высоту элементов (так что «я пытаюсь вернуться ...» - это не мое намерение), мой вопрос о поведении оператора if с двумя заданными равными значениями. Я просто попытался объяснить, как я туда попал. - Существует разница между устранением орфографических ошибок и интерпретацией текста к другому значению.

+11

Можете ли вы включить код, который запускал эту проверку? Я подозреваю, что в реализации есть некоторые незначительные детали, которые прояснят проблему. – ssube

+0

Я написал код в офисе, теперь я дома и не могу смотреть на него. Я скопирую и вставьте его завтра. Это как a = $ (window) .height(), b = $ (document) .height(), затем: if (a> = b) log TRUE else log FALSE. Все это очень просто и просто, с фигурными скобками и точкой с запятой. Я думал, что это неважно, потому что результат такой, как я писал выше, и главный вопрос: почему (548> = 548) false? :) – StackBerlin

ответ

0

Без тега doctype Chrome, Firefox и Safari сообщают о том же значении для обоих вызовов.

<!DOCTYPE HTML> 

Добавление строгого doctype приводит к тому, что значения работают как рекламируемые.

Это, скорее всего, одно и то же в нескольких браузерах.

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