Ошибка синтаксиса JavaScript - PullRequest
0 голосов
/ 13 ноября 2010

Когда я запускаю приведенный ниже код, консоль отладки Safari сообщает мне:

TypeError: Результат выражения 'document.getElementById ("txtHint")' [null] не является объектом.

Кажется, что выдает ошибку в этой строке:

document.getElementById("txtHint").innerHTML=xmlhttp.responseText;

Код

 function showItem(str)
{
if (str.length==0)
  {
  document.getElementById("txtHint").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200 && xmlhttp.responseText!='')
    {
    document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getitem.php?q="+str,true);
xmlhttp.send();
}

Я не уверен, почему брошен этот эрор. Существует абсолютно DIV с идентификатором «txtHint», и, тем не менее, safari не может корректно выполнять этот код. Наверное, мой вопрос: что не так с этим блоком кода?

Ответы [ 3 ]

1 голос
/ 13 ноября 2010

Это не проблема синтаксиса, она говорит вам, что document.getElementById("txtHint") вернул null (т.е. не было элемента с таким идентификатором), что означает, что результат (null) не является объектом, что означаетна него можно позвонить .innerHTML.

1 голос
/ 13 ноября 2010

Разве это не повторяющийся вопрос? В любом случае, попробуйте бросить скрипт перед тегом end body или вызвать функцию после готовности dom / загрузки окна.

0 голосов
/ 13 ноября 2010

Да, согласен с Яном Генри. Из сообщения об ошибке я предполагаю, что в документе нет элемента с идентификатором «txtHint».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...