doudouba4520 2019-04-09 17:35
浏览 108
已采纳

单击顶部链接时会调用onclick函数

I have a link linking to user pages on posts, and the post itself opens a dedicated page for the post, when clicked on: $userid = $entry['userid'];

$username = getUserName($userid);
$created_at = DateTime::createFromFormat('Y-m-d H:i:s', $entry['created_at']);
echo "<div class=\"".$class."\" onclick=\"postById(".$entry['id'].")\"><p class=\"info\">Posted by <a class=\"userlink\" onclick=\"userById(".$userid.")\">".$username."</a> on ".$created_at->format('j.n.Y')." at ".$created_at->format('H:i')."</p>";
echo "<h2 class=\"title\">".$entry['title']."</h2>";
echo $entry['content']."</div>";

The functions:

function postById(postid) {
  let form = document.createElement('form');
  form.action = 'post.php'
  form.method = 'GET'
  form.innerHTML = '<input name="postid" class="hidden" value="' + postid + '">';
  document.body.append(form);
  form.submit()
}
function userById(userid) {
  let form = document.createElement('form');
  form.action = 'user.php'
  form.method = 'GET'
  form.innerHTML = '<input name="userid" class="hidden" value="' + userid + '">';
  document.body.append(form);
  form.submit()
}

When clicking on the post, it redirects to its page, as it should. But when clicking on the link, the post page opens anyway. userById() still gets called, but after postById(), and by my understanding breaks with the first redirect.

How can I stop the div from recognising a click when clicking the link ontop?

Illustration of how it should be Green = userById(); orange = postById()

  • 写回答

3条回答 默认 最新

  • douyue4334 2019-04-09 18:03
    关注
    Function postById(postid) {
          disableOtherLinks(); //You must define it ;)
          ...
    

    OR

    var called = false;
    
    Function postById(postid) {
         if( called ) return false;
         called = true;
         ...
    
    Function userById(userid) {
         if( called ) return false;
         called = true;
         ...
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?