0

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 を日の値に設定するための変更に関するアイデアはありますか?

4

1 に答える 1

0

YourtodoItemはコンストラクターによって作成された JS オブジェクトであり、やTodoのような DOM ノードではありません。したがって、メソッドはありません。そのプロパティを設定する場合は、(メンバー operatorを使用して) 割り当てるだけです。lispanTodosetAttribute

todoItem.dueDate = daysL
于 2013-03-10T18:54:44.273 に答える