Узел не заполнит JavaScript - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над списком узлов, который будет заполняться, когда пользователь создает новые задачи. Я не могу заставить Узел заполнить его значения, и он мешает мне прогрессировать. Все, что я ищу за помощью, не дает никакой помощи, если только его Premade значения в коде. Не знаю, почему и пытаться получить помощь от моего профессора - все равно что разговаривать с кирпичной стеной.

мой JavaScript

function Node() {
    this.task = document.getElementById('task').value;
    this.priority = document.getElementById('priority');
    this.owner = function () {
            if (Math.random() > .5) {
                return 'Bob';
            } else {
                return 'Joe';
            }
        };
    this.next = null;
}

function SLinkedList() {
    this.head = null;

    this.append = function() {
        var node = new Node();
        var checkNode = this.head;
        if (!checkNode) {
            this.head = node;
            return node;
        } else {
            var tail = this.findTail(this.head);
            tail.next = node;
        }
    };

    this.findTail = function (currentNode) {
        if (currentNode.next === null) {
            return currentNode;
        } else {
            return this.findTail(currentNode.next);
        }
    };

    document.getElementById('item-output').innerHTML = "Item added. Task: " `+ Node.task + " Priority: " + Node.priority + "Owner: " + Node.owner;`
}

//unfinished to display all items because node won't populate
function displayItems() {
    this.getTasks = function(node, tasks) {

    }
}

var myList = new SLinkedList();

console.log(myList.head);

мой HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Linked List</title>
    <link rel="stylesheet" href="linkedList.css">
    <script type="text/javascript" src="linkedList.js" defer></script>
</head>
<body>
    <br />
    <form id="theForm">
        <fieldset>
            <legend>
                Enter a (Business) Item To Be Done
            </legend>
            <div>
                <label for="task">Task:</label>
            </div>
            <div>
                <input type="text" name="task" id="task" required="required">
            </div>
            <div>
                <label for="task">Priority:</label>
            </div>
            <div>
                <select name="priority" id="priority" required="required">
                <option value="high">high</option>
                <option value="medium">medium</option>
                <option value="low">low</option>
              </select>
            </div>

             <div>
              <input type="button" onclick="SLinkedList()" value="Add it!" > 
            </div>
            <div id="item-output"></div>
        </fieldset>
        <fieldset>
            <legend>
                Display All (Business) Items
            </legend>
            <div>
              <input type="button" value="Display All Items" onclick="displayItems()">
            </div>
            <div id="all-items"></div>
        </fieldset>
    </form>
</body>
</html>

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

Хотя большая часть кода в JsBin Linked List (Ссылки на внешний сайт.) Ссылки на внешний сайт. могут быть использованы повторно, вам нужно будет сделать несколько изменений. К ним относятся:

  1. Создание нового пустого объекта списка элементов с помощью функции SLinkedList при начальной загрузке страницы.
  2. В исходном коде объект Node использует this.value. Замените его на this.task, this.priority, this.owner и т. Д., Чтобы он имел те же атрибуты, что и объект item в последнем назначении.
  3. В исходном коде, когда новый объект связанного списка создается с помощью функции SLinkedList, он добавляет начальный узел в this.head. В новом коде this.head должен быть нулевым.
  4. Измените метод append, чтобы при добавлении он проверял, является ли головной узел нулевым. Если это ноль, добавьте новый элемент к голове. В противном случае добавьте конец связанного списка.
  5. В исходной функции с именем displayitems () вынимают почти весь код и заставляют его вызывать новую функцию с именем getTasks (узел, задачи). Эта новая функция использует тот же рекурсивный подход, который используется в gettail () (например, она сама себя вызывает) для обхода узлов в связанном списке. Первый параметр функции - это головной узел связанного списка. Второй параметр - пустая строка. Поскольку рекурсивная функция вызывает себя и пересекает связанный список, добавьте в строку задач значения задач, приоритета и владельца в каждом узле. После завершения перемещения верните строку задач в displayItems (). Затем displayItems () может использовать строку для записи элементов (и соответствующего HTML) в DOM.
...