好的,我们开始。我有一个可点击的图片(太难了,对吧?):
<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 inline(上面的示例)完成了此操作,并使用
echo()
语句,甚至是带有printf()
通配符的\'%s\'
语句。好的,当我单击图像时,将调用
Favorite(id)
javascript函数。 VERY的第一个命令是alert();
语句,后跟一些AJAX代码。后者运行良好,当单击主页上的图像时,AJAX引用的php脚本可以很好地完成其工作。
然后,您也可以单击其他图像,所有内容仍然可以正常运行,但是单击已单击的图像...什么都没有...纳达... 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();
}
就像我说的,一切都在第一次运行,但是您必须刷新页面才能再次单击同一图像。
最佳答案
好吧,这就是问题。您拥有以下内容(我已删除了所有不相关的标签/属性/ PHP):
<DIV id="1">
<IMG onclick="favorite(1);"/>
</DIV>
当您单击
IMG
时,将调用favorite()
函数。然后,您可以通过AJAX获取内容,并更新innerHTML
元素的DIV
。此时,您正在用从AJAX请求中检索到的内容替换DIV
内容。AJAX内容很可能不包含
onclick
处理程序,因此,一旦更新了元素一次,您的onclick
处理程序就会消失。随后的点击将不再调用您的favorite()
方法。只需将
onclick
处理程序放在DIV
而不是IMG
上,一切都会好起来的。关于javascript - HTML PHP onclick只工作一次,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25375030/