HTML PHP onclick只工作一次

时间:2014-08-19 02:53:38

标签: javascript php html ajax

好的,我们走了。我有一个可点击的图像(巧妙,对吧?):

<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内联(上面的示例)完成了这项工作,并完成了它 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();
}

正如我所说,一切都是第一次有效,但你必须刷新页面才能再次点击同一图像。

1 个答案:

答案 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上,一切都会好的。