2016-09-28 92 views
-2

我有一些HTML:的onclick被称为连续

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div onclick="postClick()" class="btn-simple" id="button">Solve</div> 
 
<div id="message"> 
 
    <p></p> 
 
</div> 
 
<script> 
 
    function postClick() { 
 
    answers = ["A", "B", "C"] 
 
    rand = answers[Math.floor(Math.random() * answers.length)]; 
 
    document.getElementById("message").innerHTML = "<p>" + rand + "</p>"; 
 
    $.ajax({ 
 
     type: 'POST', 
 
     url: 'somefile.php', 
 
     dataType: 'text', 
 
     success: function(msg) { 
 
     if (msg) { 
 
      window.location = msg; 
 
     } 
 
     } 
 
    }); 
 
    } 
 
</script>

之前,我点击按钮的第一次,一切都很好。 但是,一旦我点击了按钮,显示屏会自动循环查看答案,就好像我每半秒左右点击一次按钮。我想要的是每次点击时显示的不同答案。

我在做什么错?

编辑:

如果我登录该函数的调用,通过

arguments.callee.caller.toString() 

是按钮点击:

function onclick(event) { postClick() } 
+4

无法重现(Firefox 51)。提供[最小,完整和可验证示例](http://stackoverflow.com/help/mcve)。 – Xufox

+2

向我们展示您的成功回调中的代码 – charlietfl

+3

您可能已将“postClick()”包含在AJAX请求中的某处,您只需要“postClick”。 – Xufox

回答

0

我发现了这个问题,但我不明白它。 以下脚本会始终引发该事件。

<script src="//assets.codepen.io/assets/editor/live/events_runner-21174b4c7273cfddc124acb0876792e0.js"></script> 
+0

我刚刚分析了一下脚本。函数'm'创建点击事件并分派它。函数'u'设置半秒超时。函数'c'绑定调用其他函数的事件侦听器,这些函数触发调用上述某些函数的另一个事件侦听器。这很混乱,因为它已经被缩小了,但你明白了为什么这个脚本会对怪异行为负责。您是否已将生成的CodePen源代码复制粘贴到您的HTML文件中?下一次事先创建一个HTML模板,并在那里复制粘贴你的JS,CSS和HTML。 – Xufox