Я получил ошибку ссылки: кнопка не определена - PullRequest
0 голосов
/ 19 февраля 2020

В настоящее время изучаете «Что такое Закрытие» и попробуйте этот практический код. Запуск в Visual Studio code .

for (let [idx,btn] of buttons.entries()) { 
    btn.addEventListener(
        "click",
        function onClick(){ 
            console.log(
                `Clicked on button (${ idx })!
                `); 
            }
        ); 
     }

Ожидается, что для каждой итерации будут получены новые переменные в области блока (idx, btn); и ожидал, что l oop также создает новую внутреннюю функцию onClick (..) каждый раз. Но он получил эту ошибку.

PS C:\Users\leePC\babel\public\src> node test.js
C:\Users\leePC\babel\public\src\test.js:1
for (let [idx,btn] of buttons.entries()) { 
btn.addEventListener("click",function onClick(){ 
console.log(`Clicked on button (${ idx })!`); }); }
                          ^

ReferenceError: buttons is not defined
    at Object.<anonymous> 
(C:\Users\leePC\babel\public\src\test.js:1:31)
    at Module._compile 
(internal/modules/cjs/loader.js:1157:30)
    at Object.Module._extensions..js 
(internal/modules/cjs/loader.js:1177:10)
    at Module.load (internal/modules/cjs/loader.js:1001:32)
    at Function.Module._load 
(internal/modules/cjs/loader.js:900:14)
    at Function.executeUserEntryPoint [as runMain] 
(internal/modules/run_main.js:74:12)
    at internal/main/run_main_module.js:18:47 

Поскольку некоторые люди говорили, что я должен реализовать

npm install react-uikit-button --save;

// ES6
import Button from 'react-uikit-button';

// ES5
var Button = require('react-uikit-button');

И попробуйте импортировать перед кодом, но он все равно не работает. Появляется другая ошибка ... Как это исправить?

edit: когда я использую оператор import и затем конвертирую этот код Babel, эта ошибка возникает (в коде Visual Studio)

'Button' is declared but its value is never read

1 Ответ

1 голос
/ 17 марта 2020
//May be the scope of buttons does not exists.
//Try to run this one.

<!DOCTYPE html>
<html>
    <head>
        <script>
            function myFunction() {
                let buttons = document.querySelectorAll(`[id]`)

                for (let [idx, btn] of buttons.entries()) {
                    btn.addEventListener("click", function onClick() {
                        alert(`Clicked on button (${idx})!
                `);
                    });
                }

            }
        </script>
    </head>

    <body onload="myFunction()">
        <button id="0"> 0 </button>
        <button id="1"> 1 </button>
        <button id="2"> 2 </button>
        <button id="3"> 3 </button>
        <button id="4"> 4 </button>
    </body>

</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...