Кнопка не выполняет функцию при нажатии - PullRequest
1 голос
/ 10 апреля 2020

У меня есть кнопка, и я хочу, чтобы она выполняла функцию при нажатии на нее, но по какой-то причине она вообще не работает. Я думаю, что может быть проблема с тем, как я связываю кнопку с моим js файлом. Вот мой HTML:

<!DOCTYPE html>
<html lang = "en-us"></html>
   <head>
      <script src = "spotifybot.js" charset = "utf-8"></script>
      <title>Spotify Login</title>
   </head>
   <body>
      <button id = "login" style = "width: 100px;height: 100px">Login To Spotify</button>
   </body>
</html>

А вот мой js файл:

const loginButton = document.getElementById("login").addEventListener('click', loginToSpotify());
const request = require("request");

function loginToSpotify()
{
   console.log("Here");
}

Оба файла находятся в одной папке, кстати, на случай, если вы думаете, что это может быть проблемой .

РЕДАКТИРОВАТЬ: После проверки консоли браузера (я думал, что смогу проверить свою консоль Visual Studio, но, очевидно, нет), я обнаружил, что ошибка с «require» Ключевое слово

Ответы [ 4 ]

2 голосов
/ 10 апреля 2020

Это неверно:

addEventListener('click', loginToSpotify());

Вы либо:

addEventListener('click', loginToSpotify);

, либо:

addEventListener('click', function() { loginToSpotify() });
1 голос
/ 10 апреля 2020

Измените эту строку:

const loginButton = document.getElementById("login").addEventListener('click', loginToSpotify());

на:

const loginButton = document.getElementById("login").addEventListener('click', loginToSpotify);

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

И я вижу, что вы используете require, это приложение Electron JS, счастливое кодирование :)

1 голос
/ 10 апреля 2020

require не определен, и вы не хотите выполнять свою функцию при настройке слушателя.

const loginButton = document.getElementById("login").addEventListener('click', loginToSpotify);
//const request = require("request");

function loginToSpotify()
{
   console.log("Here");
}
   <head>
      <script src = "spotifybot.js" charset = "utf-8"></script>
      <title>Spotify Login</title>
   </head>
   <body>
      <button id = "login" style = "width: 100px;height: 100px">Login To Spotify</button>
   </body>
1 голос
/ 10 апреля 2020

Второй параметр .addEventListener() должен быть функцией.

Вы вызываете функцию loginToSpotify(), которая возвращает undefined. Итак, вы передаете undefined вместо действительной функции.

Вы должны изменить это:

.addEventListener('click', loginToSpotify());

на следующее:

.addEventListener('click', loginToSpotify);

Кстати, .addEventListener() ничего не возвращает (т.е. возвращает undefined), поэтому ваш loginButton теперь имеет значение undefined.

Вы можете сделать это:

document.getElementById('login').addEventListener('click', loginToSpotify);

Или, если вы также хотите сохранить кнопку:

const loginButton = document.getElementById('login');
loginButton.addEventListener('click', loginToSpotify);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...