Существует проблема с доступом к переменной извне функции щелчка jquery даже с глобальной переменной - PullRequest
0 голосов
/ 31 марта 2019

Я пытаюсь сделать нажатие кнопки jquery, чтобы изменить весь текст на определенный текст в родительском div, но, похоже, я не могу получить доступ к переменным, которые находятся за пределами функции jquery

Я перепробовал много решений для работы со стеком, но ни одно из них не сработало, и большинство из них выглядело очень похоже на мой код, поэтому я не понимаю, почему он не работал.

<!DOCTYPE html>
<html>

<head>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js" type="text/javascript"></script>
</head>

<body>

    <div id="test">
        <p>Click the button to get the tag names of the body element's children.</p>
    </div>
    <button>Try it</button>

    <p id="demo"></p>

    <script>
        $(document).ready(function() {

            var Dropdownchildren = document.getElementById("test").children
            for (i = 0; i < Dropdownchildren.length; i++) {
                console.log(Dropdownchildren[i].innerHTML)
                    // will work
                $(Dropdownchildren[i]).click(function() {
                    console.log(Dropdownchildren[i].innerHTML)
                        // not work
                })
            }

        })
    </script>

</body>

</html>

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

1 Ответ

0 голосов
/ 31 марта 2019

Вы объявляете глобальную переменную i в цикле for, вы должны объявить ее с let, если хотите решить проблему,

<!DOCTYPE html>
<html>

<head>
    <script src="https://code.jquery.com/jquery-3.3.1.min.js" type="text/javascript"></script>
</head>

<body>

    <div id="test">
        <p>Click the button to get the tag names of the body element's children.</p>
    </div>
    <button>Try it</button>

    <p id="demo"></p>

    <script>
        $(document).ready(function() {

            var Dropdownchildren = document.getElementById("test").children
            for (let i = 0; i < Dropdownchildren.length; i++) {
                console.log(Dropdownchildren[i].innerHTML)
                    // will work
                $(Dropdownchildren[i]).click(function() {
                    console.log(Dropdownchildren[i].innerHTML)
                        // not work
                })
            }

        })
    </script>

</body>

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