IE выдает ошибку JavaScript: значение свойства 'googleMapsQuery' равно null или undefined, а не объект Function (работает в других браузерах)
У меня настоящая проблема с областью JavaScript в IE 9.
Это находится внутри тела моего документа (да, я понимаю, что script должен идти в голову для правильного HTML, но я никогда раньше не разбивал script). script находится в теле, потому что я не хочу связываться с общей заголовочной страницей для script, которая применима только для этой страницы:
<script type="text/javascript">
function googleMapsQuery(accountNum) {
// function code is here (omitted for brevity)
}
</script>
Это внутри блока td
внутри блока tr
внутри блока tbody
внутри блока table
внутри блока form
внутри body
:
<button id="google-422111" onclick="googleMapsQuery(422111)" type="button">Google This!</button>
Я даже переместил блок script над формой только в том случае, если порядок объявления script был релевантным (это не так).
script работает безупречно в FireFox и Chrome, но в IE 9 (с просмотром совместимости или без него) я получаю эту ошибку:
SCRIPT5007: значение свойства 'googleMapsQuery' равно null или undefined, а не объект Function
Я изучил область JavaScript, и я не могу понять, почему IE считает, что "googleMapsQuery" является свойством и почему он undefined. Это функция, и я ее определил!
Ответы
Ответ 1
Я нашел ответ, и, несмотря на то, что я сообщил, он НЕ был браузером. Ошибка была в моем функциональном коде и произошла бы в любом браузере. Это сводится к этому. У меня было две строки в моем коде, которые были специально для FireFox/FireBug. Они использовали console.log. В IE они выбросили ошибку, поэтому я прокомментировал их (или так я думал). Я сделал дерьмовую работу, комментируя их, и сломал брекетинг в моей функции.
Оригинальный код (с консолью в нем):
if (sxti.length <= 50) console.log('sxti=' + sxti);
if (sxph.length <= 50) console.log('sxph=' + sxph);
Сломанный код (неправильные скобки внутри комментариев):
if (sxti.length <= 50) { //console.log('sxti=' + sxti); }
if (sxph.length <= 50) { //console.log('sxph=' + sxph); }
Фиксированный код (фиксированные скобки вне комментариев):
if (sxti.length <= 50) { }//console.log('sxti=' + sxti);
if (sxph.length <= 50) { }//console.log('sxph=' + sxph);
Итак, это было мое собственное неаккуратное кодирование. Функция действительно не была определена, потому что синтаксическая ошибка не позволяла ей закрываться.
Хорошо, живи и учись.;)
Ответ 2
У меня была аналогичная проблема с свойством null или undefined.
Это закончилось тем, что режим документа IE был по умолчанию установлен стандартами IE7. Это было связано с тем, что режим совместимости автоматически устанавливается для всех сайтов интрасети ( Сервис > Настройка представления совместимости > Отображать сайты интрасети в представлении совместимости > ).
Ответ 3
Вы пытались добавить точку с запятой в onclick="googleMapsQuery(422111);"
. Мне не хватает вашего кода, чтобы проверить, не приведет ли ошибка к точке с запятой, но т.е. Является более разборчивым в отношении синтаксиса.
Ответ 4
Всего несколько минут назад у меня возникла такая же проблема. У меня возникла проблема, связанная с тем, что сразу после запуска jQuery запускается другой сценарий jQuery. В конце концов, все будет хорошо.
Ответ 5
Итак, у меня была аналогичная ситуация с той же ошибкой. Я забыл, что изменил режим совместимости на своей машине dev, и у меня была консольная команда в моем javascript. Я изменил режим совместимости в IE и удалил команду console.log. Больше проблем.