【问题标题】:Button auto-clicks once on load, then can't be clicked按钮在加载时自动单击一次,然后无法单击
【发布时间】:2014-01-17 23:53:50
【问题描述】:

我正在尝试单击按钮使变量增加一,然后更新显示该变量的页面计数器。出于某种原因,在页面加载时,该按钮显然会单击一次,而任何实际的单击都无济于事。

我已经尝试$("#click").click(click(1)); 并将onClick="click(1)" 放在按钮的实际 HTML 中,但两者似乎都输出相同的结果。

这是相关的 HTML:

<div class="column_middle"> 
    <div style="font-size:115%;display:inline;">Money: <span id="money">0</span></div>

    <button id="click" class="mainbutton" style="margin:10px;margin-right:5px;" title="">Click</button>

以及相关的javascript:

// Activated on DOM load
function onLoad( jQuery ) {
    // Set up button functions
    $("#click").click(click(1));
}

function click(amount) { // Player clicking
    money += amount; // Add the amount of clicks to the total money

    html_money.text(money); // Update page money value

    console.log("Clicked "+amount+" times.");
}

// Variable declaration
var money = 0; // Total money
var stock = 0; // Total stock
    var html_money = $("#money"); // Money variable on the actual page
    var html_stock = $("#stock"); // Stock variable on the actual page

【问题讨论】:

  • 检查下面的更新代码

标签: javascript jquery html button click


【解决方案1】:

至少这一行不起作用:$("#click").click(click(1)); 因为在点击事件上,您将“执行”点击函数(void)的返回值,而不是函数本身。

试试这个:

<div class="column_middle">
    <div style="font-size:115%;display:inline;">Money: <span id="money">0</span></div>
    <button id="incrementButton" class="mainbutton" style="margin:10px;margin-right:5px;" title="">Click</button>
</div>

JS:

$(document).ready(function () {

  var increment = function (amount) {
    $('#money').text(
      parseInt($('#money').text(), 10) + amount
    );
  }  

  $('#incrementButton').click(function () {
    increment(1);
  });

  increment(1);

});

我还创建了一个小提琴:http://jsfiddle.net/cP6Lq/

【讨论】:

    【解决方案2】:

    将您的代码更改为:

    function incrementMoney(amount) { // Player clicking
        $("#money").html( parseInt($("#money").html()) + amount);
    }
    
    $(document).ready(function () {
        $("#click").click(function(){
            incrementMoney(1));
        });
    }
    

    如果您的元素 id 的名称与函数类似,那么避免使用限定名称非常重要..

    【讨论】:

    • 无效 - 结果相同。另外,我使用的 jQuery 2.0.3 不支持 IE8 及以下版本,所以我也不支持旧的 IE。
    • 检查上面更新的代码,确保调用了onLoad方法,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多