我的JavaScript代码应该使用AJAX接收数据并将其显示在名为“txtHint”的DIV中。但是,这是代码执行时出现的错误(我在Safari中使用内置调试器):
TypeError:表达式'document.getElementById(“txtHint”)的结果'[null]不是对象。
以下是代码:
function showItem(str)
{
if (str=="")
{
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)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getitem.php?q="+str,true);
xmlhttp.send();
}
现在我得到: TypeError:表达式'el'[undefined]的结果不是对象。
这是否意味着我的元素不存在?
答案 0 :(得分:2)
首先,检查元素是否存在。
var el = document.getElementById('txtHint');
if ( el ) {
el.innerHTML = xmlhttp.responseText;
}
确保在DOM中生成元素后绑定它。您还可以等待整个窗口通过window.onload = showItem
加载。
人们使用像jQuery这样的框架来节省时间。您的代码会产生如下简洁的内容:
$(function() {
function blah(str) {
if ( str == '' ) {
$('#txtHint').html('')
return;
}
$.ajax({ url:'blah.php', success:function(html) {
$('#txtHint').html(html);
} })
}
});