Javascript onclick() 需要点击两次

标签 javascript jquery html button onclick

我有三个按钮,每个按钮都调用 chooseMap() 函数 onclick,然后根据按钮 id 将用户重定向到一个新页面。一切正常,但我每次都必须点击两次。谁能告诉我这是为什么,我该如何解决?

<div class="row text-center" onclick="chooseMap();">
  <div class="col-md-4">
      <button type="button" class="btn btn-primary" id="world" >World Map</button>
  </div>
  <div class="col-md-4">
    <button type="button" class="btn btn-primary" id="europe">Europe</button>
  </div>
  <div class="col-md-4">
    <button type="button" class="btn btn-primary" id="sweden">Sweden</button>
  </div>
</div> 
function chooseMap(){
  $(document).ready(function() {
    document.getElementById("sweden").onclick = function(){
      location.href = "map_game/sweden.html";
    }
    document.getElementById("europe").onclick = function(){
      location.href="map_game/europe.html";
    }
    document.getElementById("world").onclick = function(){
      location.href="map_game/world.html";
    }
  })
} 

一切正常。我单击按钮,调用函数,传递正确的字符串,然后我愉快地转到下一页,那里一切正常。但是,我必须在按钮上单击两次才能使其工作。我第一次点击没有任何反应。有什么想法吗?

我已经在 Stack Overflow 上研究过这个问题,但无法通过 this 解决我的问题和 this问题。

最佳答案

问题是因为第一次点击执行了 chooseMap 函数,该函数随后附加了事件处理程序。然后,第二次单击会执行在这些事件处理程序中分配的代码。

要修复和改进您的代码,请删除内联 onclick 属性并使用 jQuery 附加您的事件。试试这个:

<div class="row text-center">
    <div class="col-md-4">
        <button type="button" class="btn btn-primary" id="world">World Map</button>
    </div>
    <div class="col-md-4">
        <button type="button" class="btn btn-primary" id="europe">Europe</button>
    </div>
    <div class="col-md-4">
        <button type="button" class="btn btn-primary" id="sweden">Sweden</button>
    </div>
</div>
$(document).ready(function() {
    $("#sweden").click(function() {
        window.location.assign('map_game/sweden.html');
    });
    $("#europe").click(function() {
        window.location.assign('map_game/europe.html');
    });
    $("#world").click(function() {
        window.location.assign('map_game/world.html');
    });
});

请注意,您甚至可以通过使用 DRY 原则进一步改进这一点,您可以使用基于 button 元素的 class 的单个处理程序,并使用按钮的 id,如下所示:

$(document).ready(function() {
    $(".btn").click(function() {
        window.location.assign('map_game/' + this.id + '.html');
    })
});

关于Javascript onclick() 需要点击两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29845463/

相关文章:

javascript - 页面响应在 Jquery Mobile 中不起作用

javascript - Foundation 5 reveal 不会打开(用 jQuery 附加到 BODY)

javascript - 如何从表中的每个新行中删除类?

javascript - 如何设置元素的标题属性而不仅仅是字符串?

javascript - DataTables javascript 无法应用于重复表

javascript - 根据所选(事件单元格)突出显示单元格边框

javascript - Algolia 自动完成筛选结果

javascript - 在 ipad 上触发 unhover/mouseout/blur

javascript - 使用 parsley.js 实现强密码策略

php - 用mysql隐藏显示div?