Переменные обрабатывают элементы DOM как нулевые. Почему это происходит? - PullRequest
0 голосов
/ 18 июня 2019

В этом коде я пытаюсь назначить элементы DOM переменным, но переменные получают значение null. Почему это происходит? Я сделал какую-то ошибку?

<!DOCTYPE html>
<html>
    <head>
        <title>Tasks</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta name="description" content="A simple task list for your day-to-day.">
        <meta name="author" content="Bruno M. B. Sdoukos">
        <meta name="keywords" content="task list, checklist">
        <script>
            var taskCreator = document.querySelector('#taskcreator');
            var list = document.querySelector('ul');
            var taskInput = document.querySelector('#taskinput');
        </script>
    </head>
    <body>
        <ul></ul>
        <input type="text" id="taskinput">
        <button id="taskcreator">Create new item</button>
    </body>
</html>

1 Ответ

2 голосов
/ 18 июня 2019

Когда браузер выполняет ваш javascrit, у него еще нет ввода и кнопки.Вы можете исправить это с помощью

<!DOCTYPE html>
<html>
<head>
    <title>Tasks</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="A simple task list for your day-to-day.">
    <meta name="author" content="Bruno M. B. Sdoukos">
    <meta name="keywords" content="task list, checklist">
</head>
<body>
<ul></ul>
<input type="text" id="taskinput">
<button id="taskcreator">Create new item</button>
<script>
    var taskCreator = document.querySelector('#taskcreator');
    var list = document.querySelector('ul');
    var taskInput = document.querySelector('#taskinput');
    taskCreator.addEventListener('click', function createNewTask(event) {
        list.innerHTML += '<li>' + taskInput.value + '</li>'
    })
</script>
</body>
</html>

или подождать в скрипте, пока не будет проанализирован весь файл.

<script>
    document.addEventListener("DOMContentLoaded", function () {
        var taskCreator = document.querySelector('#taskcreator');
        var list = document.querySelector('ul');
        var taskInput = document.querySelector('#taskinput');
        taskCreator.addEventListener('click', function createNewTask(event) {
            list.innerHTML += '<li>' + taskInput.value + '</li>'
        })
    });
</script>

https://developer.mozilla.org/ru/docs/Web/Events/DOMContentLoaded

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