Javascript语法错误

时间:2010-11-13 05:55:02

标签: javascript html ajax dom xmlhttprequest

当我运行下面的代码时,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();
}

我不确定为什么会抛出这种恐怖。绝对有一个ID为“txtHint”的DIV,但safari似乎无法正确运行此代码。我想我的问题是,这段代码有什么问题。

3 个答案:

答案 0 :(得分:1)

这不是语法问题,它告诉您document.getElementById("txtHint")返回null(即没有带有该ID的元素),这意味着结果(null)不是对象,这意味着您无法在其上调用.innerHTML

答案 1 :(得分:1)

这不是一个重复的问题吗?无论如何,尝试在结束体标记之前抛出脚本或在dom ready / window load之后调用该函数。

答案 2 :(得分:0)

是的,同意伊恩亨利。从错误消息中,我猜在文档中没有id为“txtHint”的元素。