好的,我们走了。我有一个可点击的图像(巧妙,对吧?):
<DIV id="<?PHP echo($row[number]); ?>">
<IMG TITLE="Favorite!" src="drool_bw_nobg.png"
align="center" onclick = "favorite(<?PHP echo($row[number]); ?>)">
<b>Like</b>
</DIV>
请记住,我已经使用PHP内联(上面的示例)完成了这项工作,并完成了它
echo()
语句,甚至包含printf()
通配符的\'%s\'
语句。
好的,当我点击图片时,会调用Favorite(id)
javascript函数。非常第一个命令是alert();
语句,后跟一些AJAX代码。
后者运行完美,当点击主页面上的图像时,AJAX引用的php脚本可以很好地完成它的工作。
然后你也可以点击其他图片了,一切仍然完美无缺,但你点击了你已经点击过的图片......没有... nada ... zilch。 alert()
语句甚至没有弹出。
一个真正的头颅。希望以前有人遇到过这个问题,并找到了一个聪明的解决方案。
这是我最喜欢的()javascript函数:
function favorite(id){
alert(id);
getImage = document.getElementById(id);
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
document.getElementById(id).innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getuser.php?img="+id,true);
xmlhttp.send();
}
正如我所说,一切都是第一次有效,但你必须刷新页面才能再次点击同一图像。
答案 0 :(得分:4)
嗯,这是问题所在。你有这个内容(我删除了所有不相关的标签/属性/ PHP):
<DIV id="1">
<IMG onclick="favorite(1);"/>
</DIV>
当您点击IMG
时,会调用favorite()
函数。然后,您通过AJAX获取内容,并更新innerHTML
元素的DIV
。此时,您正在用您从AJAX请求中检索的内容替换DIV
内容。
最有可能的是,AJAX内容不包含onclick
处理程序,因此一旦您更新了元素一次,您的onclick
处理程序就会消失。后续点击将不再调用您的favorite()
方法。
只需将onclick
处理程序放在DIV
而不是IMG
上,一切都会好的。