好的,我们开始。我有一个可点击的图片(太难了,对吧?):

<DIV id="<?PHP echo($row[number]); ?>">
    <IMG TITLE="Favorite!" src="drool_bw_nobg.png"
    align="center" onclick = "favorite(<?PHP echo($row[number]); ?>)"> &nbsp;
      <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/

10-10 00:19
查看更多