2017-01-31 2 views
3
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, но текст остается на 1. Почему?Почему мой HTML-текст не меняется с помощью этого JS?

Спасибо всем, что он сейчас работает! : D

ответ

3

Вы вызываете функцию и передаете ее результат обработчику. Вам нужно просто передать функцию, не называя ее.

Вам также нужно на самом деле увеличить золото, которое вы ищете, в противном случае это всегда innerHTML = 0 + 1.

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

и

goldGenerator.addEventListener("click", goldclick); 

должен работать.

2

Вам необходимо увеличить золотую переменную. Он всегда равен 1, потому что вы назначаете результат добавления элемента.

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


} 
+1

Или, более точно, поскольку золотая переменная должна увеличиваться на золото за клик: gold = gold + goldperclick; goldCounter.innerHTML = золото; –

1

Существует проблема в этой строке:

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

Это должно быть

goldGenerator.addEventListener("click", goldclick); 

Вы должны передать функцию goldclick в addEventListener.

Ваш код в настоящее время вызывает goldclick и передает результат этой функции в addEventListener.

1

Изменить этот

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

к этому

goldGenerator.addEventListener("click", goldclick); 

Вы хотите передать goldClick как обратный вызов, а не в результате вызова функции.

Смежные вопросы