Интересно, почему эта функция guessLetter автоматически вызывается во время загрузки моей страницы. Предполагается, что он будет вызван после того, как пользователь нажмет кнопку. Может ли кто-нибудь помочь мне обнаружить ошибку? Большое спасибо.

<!DOCTYPE html>

<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <title></title>
</head>
<body>
    <input type="text" id="guessLetter" /><input id="btn" type="button" value="Enter" />
    <script>
        var wordLetters = ['G', 'O', 'A', 'T'];
        var guessedLetters = ['_', '_', '_', '_'];

        function guessLetter(letter) {
            console.log('2');

        }

        var x = document.getElementById('guessLetter').value;
        document.getElementById('btn').addEventListener("click", guessLetter(x));



    </script>
</body>
</html>
0
Steve 16 Сен 2018 в 17:07

2 ответа

Лучший ответ

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

Я думаю, вы можете добиться того, чего хотите, заменив код addEventListener на

var x = document.getElementById('guessLetter').value;
document.getElementById('btn').addEventListener("click", function() {
    guessLetter(x);
});
1
Yash Thakor 16 Сен 2018 в 14:16

Проблема с этой линией

document.getElementById('btn').addEventListener("click", guessLetter(x));

Вы вызываете функцию, а не прикрепляете ее к слушателям событий

Замените звонок на

document.getElementById('btn').addEventListener("click", guessLetter);

И вместо того, чтобы отправлять параметр, попробуйте прочитать его внутри функции. Что-то вроде:

function guessLetter() {
    var x = document.getElementById('guessLetter').value;
    console.log(x);
}
0
pakobill 16 Сен 2018 в 14:17