javascript упражнение из книги ниндзя javascript

0

Это пример из одной из книг (Ninja javascript).

Я не уверен, почему консоль жалуется, что она не может добавить null.

        document.getElementById("results").appendChild(li);

где я вижу ошибки.. я делаю что-то неправильно?

Полный код приведен ниже:

            <body>
    this.assert = function assert(value, desc) {
        var li = document.createElement("li");
        li.className = value ? "pass" : "fail";
        console.log("this is ", value);
        console.log("that is ", desc);
        console.log("that is ", li);
       // console.log("that is ", className);
        //console.log("that is ", results);
        li.appendChild(document.createTextNode(desc));
        document.getElementById("results").appendChild(li);

        if ( !value ) {
            li.parentNode.parentNode.className = "fail";
        }
        return li;
    };

    function useless(callback) {return callback(); }

    var text = "Domo Arigato!";
    assert(useless(function() {return text;}) === text,
           "The useless function works! " + text); 
</script>


<ul id="results"></ul>

ОБНОВЛЕНИЕ: после того, как предложение работает отлично сейчас.. спасибо всем

<script>
    window.onload = function () {
       function useless(callback) {return callback(); }

       var text = "Domo Arigato!";
       assert(useless(function() {return text;}) === text,
           "The useless function works! " + text); 

    }
</script>


<ul id="results"></ul>

ОБНОВЛЕНИЕ: еще один вопрос,

assert(useless(function() {return text;}) === text,

Почему === текст необходим выше? Какая цель здесь? (Я только что протестировал и без текста ===, он также работает.. так что было целью автора здесь?)

Теги:
dom

1 ответ

1
Лучший ответ

Это потому, что ваш скрипт, выполненный до того, как элемент с id results существует на странице.

Ты можешь:

  • Поместите скрипт после него
  • Выполнение скрипта во время события window.onload
  • Более подходящим событием является событие DOMContentLoaded
  • 1
    Там также нет открытия для тега <script>.
  • 0
    @krillgar Но упомянутая ошибка, похоже, говорит о том, что скрипт действительно работал.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню