Javascript で作成したノードの属性を設定する必要があります。ただし、スクリプト全体でさまざまな関数に値が配置されているため、非常に複雑になっています。
私はコンストラクター関数を持っています:
function Todo(id, task, who, dueDate) {
this.id = id;
this.task = task;
this.who = who;
this.dueDate = dueDate;
this.done = false;
}
次に、todos を保持する span 要素を作成します。
function createNewTodo(todoItem) {
var li = document.createElement("li");
li.setAttribute("id", todoItem.id);
var spanTodo = document.createElement("span");
spanTodo.innerHTML =
todoItem.who + " needs to " + todoItem.task + " by " + todoItem.dueDate;
li.appendChild(spanTodo);
return li;
}
次に、誰とタスクを設定するために使用するページのフォームから値を取得します。そして日付ですが、コードの後半でその値を取得して、今日の日付と入力した日付の差を取得するため、これは少し複雑です。
function getFormData() {
var task = document.getElementById("task").value;
if (checkInputText(task, "Please enter a task")) return;
var who = document.getElementById("who").value;
if (checkInputText(who, "Please enter a person to do the task")) return;
var adate = document.getElementById("dueDate").value;
var reString = new RegExp("[0-9]{4}\\-\[0-9]{2}\\-\[0-9]{2}");
var date = compareDates(date);
var id = (new Date()).getTime();
var todoItem = new Todo(id, task, who, date);
todos.push(todoItem);
addTodoToPage(todoItem);
saveTodoItem(todoItem);
}
したがって、日はここで必要な値です。dueDate を等しい日に設定して、その値を createNewToDo 関数の innerHTML で使用できるようにします。
function compareDates(date) {
var days = Math.floor(daysCal);
console.log(date);
todoItem.setAttribute("dueDate", days);
if (cdate < date) {
console.log("you have" + " " + days + " " + "more day(s)");
}
else if (cdate > date ) {
console.log("you are" + " " + -days + " " + "day(s) overdue");
}
}
dueDate を日の値に設定するための変更に関するアイデアはありますか?