为什么我的HTML文本没有改变这个JS?

时间:2017-01-31 23:32:03

标签: javascript html

var goldCounter = document.getElementById("goldcounter");
var goldGenerator = document.getElementById("goldgenerator");
var gold = 0;
var goldperclick = 1;
goldCounter.innerHTML = 0;
function goldclick() {
goldCounter.innerHTML = gold + goldperclick;
}
goldGenerator.addEventListener("click", goldclick());

我使用这个JS代码尝试在每次单击按钮时将HTML段落的文本设置为gold的值,但是文本保持为1.为什么?

谢谢大家现在的工作! :d

4 个答案:

答案 0 :(得分:3)

您正在调用该函数并将其结果传递给处理程序。你需要在不调用它的情况下传递函数。

你还需要实际增加你正在寻找的黄金,否则它总是innerHTML = 0 + 1

function goldclick() { 
   gold += goldperclick;
   goldCounter.innerHTML = gold;
}

goldGenerator.addEventListener("click", goldclick);

应该有用。

答案 1 :(得分:2)

你必须增加黄金变量。它始终为1,因为您要将添加结果分配给元素。

function goldclick() { 
   //Add this
   gold += goldperclick;
   goldCounter.innerHTML = gold


}

答案 2 :(得分:1)

这一行存在问题:

 goldGenerator.addEventListener("click", goldclick());

应该是

 goldGenerator.addEventListener("click", goldclick);

您应该将函数goldclick传递给addEventListener

您的代码当前正在做的是调用goldclick,并将此函数的结果传递给addEventListener

答案 3 :(得分:1)

更改此

goldGenerator.addEventListener("click", goldclick());

到这个

goldGenerator.addEventListener("click", goldclick);

您希望将goldClick作为回调传递,而不是函数调用的结果。

相关问题