2015-12-14 2 views
-1

Я пишу простую игру и хочу добавить событие click в элемент body. Но сценарий ниже не работает. Есть ли что-нибудь, что я могу изменить, чтобы заставить его работать?Назначение функции Onclick не работает

var theBody = document.getElementsByTagName("body")[0]; 
theBody.addEventListener("click", gameOver); 
theBody.onclick = gameOver(); 
function gameOver() { 
    alert("Game Over!"); 
} 
+5

'theBody.onclick = gameOver;' - избавиться от '()', потому что это означает, что вы * вызываете * функцию. – Pointy

+0

также 'var theBody = document.body;' немного проще :) – Pointy

+1

'theBody.onclick = gameOver();' не требуется. Попробуйте это: https://jsfiddle.net/muevbeqm/ – Rayon

ответ

-1
Try this: 

document.getElementsByTagName("body ").addEventListener("click", function(){ 
    gameOver(); 
}); 
function gameOver() { 
    alert("Game Over!"); 
} 
+0

Работает! Большое спасибо! – susansecret

+0

@susansecret [Нет, это абсолютно не работает ...] (http://jsfiddle.net/5wvb654u/) Он выдает ошибку 'document.getElementsByTagName (...). AddEventListener не является функцией', потому что вы можете 't назначить прослушиватель событий массиву. Это также ужасный стиль, потому что вы создаете функцию только для вызова другой функции. –

+0

Кроме того, массив пуст, потому что нет такого тега, как «body» '... –

1

Используйте это:

document.body.addEventListener("click", gameOver); 

Или это:

document.body.onclick = gameOver; // no brackets 

Не так.

+0

Спасибо. Я удалил код, и теперь код выглядит следующим образом. Но он по-прежнему не работает ... theBody.addEventListener («click», gameOver); функция играOver() { \t предупреждение («Игра закончилась!»); } – susansecret

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