2014-01-17 57 views
0

我试图让按钮单击导致变量增加1,然后更新显示变量的页面计数器。出于某种原因,在页面加载时,该按钮显然会点击一次,并且任何实际的点击都不会执行任何操作。按钮在加载时自动点击一次,然后无法点击

我试过$("#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 
+0

检查下面 – Shehabix

回答

1

至少下面这行不起作用:$("#click").click(click(1));,因为在click事件中,您将“执行”click函数(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/

0

改变你的代码:

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

$(document).ready(function() { 
    $("#click").click(function(){ 
     incrementMoney(1)); 
    }); 
} 

避免使用限定的名字是非常重要的特别是如果你有像功能一样命名的元素ID。

+0

更新的代码没有工作 - 同样的结果。另外,我使用jQuery 2.0.3,它不支持IE8及以下版本,所以我不支持旧IE浏览器。 – LukeZaz

+0

检查上面更新的代码,并确保您调用onLoad方法, – Shehabix

相关问题