Я работаю над списком узлов, который будет заполняться, когда пользователь создает новые задачи. Я не могу заставить Узел заполнить его значения, и он мешает мне прогрессировать. Все, что я ищу за помощью, не дает никакой помощи, если только его 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 (Ссылки на внешний сайт.) Ссылки на внешний сайт. могут быть использованы повторно, вам нужно будет сделать несколько изменений. К ним относятся:
- Создание нового пустого объекта списка элементов с помощью функции SLinkedList при начальной загрузке страницы.
- В исходном коде объект Node использует this.value. Замените его на this.task, this.priority, this.owner и т. Д., Чтобы он имел те же атрибуты, что и объект item в последнем назначении.
- В исходном коде, когда новый объект связанного списка создается с помощью функции SLinkedList, он добавляет начальный узел в this.head. В новом коде this.head должен быть нулевым.
- Измените метод append, чтобы при добавлении он проверял, является ли головной узел нулевым. Если это ноль, добавьте новый элемент к голове. В противном случае добавьте конец связанного списка.
- В исходной функции с именем displayitems () вынимают почти весь код и заставляют его вызывать новую функцию с именем getTasks (узел, задачи). Эта новая функция использует тот же рекурсивный подход, который используется в gettail () (например, она сама себя вызывает) для обхода узлов в связанном списке. Первый параметр функции - это головной узел связанного списка. Второй параметр - пустая строка. Поскольку рекурсивная функция вызывает себя и пересекает связанный список, добавьте в строку задач значения задач, приоритета и владельца в каждом узле. После завершения перемещения верните строку задач в displayItems (). Затем displayItems () может использовать строку для записи элементов (и соответствующего HTML) в DOM.