2
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;

    var spanDone = document.createElement("span");
    spanDone.setAttribute("id", todoItem.id); //where I try to assign id
    if (!todoItem.done) {
        spanDone.setAttribute("class", "notDone");
        spanDone.innerHTML = "     ";
    }
    else {
        spanDone.setAttribute("class", "done");
        spanDone.innerHTML = " ✔ ";        
    }
    spanDone.setAttribute("id", todoItem.id);

    var spanDelete = document.createElement("span");
    spanDelete.setAttribute("id", todoItem.id);
    spanDelete.setAttribute("class", "delete");
    spanDelete.innerHTML = " ✗ ";

    spanDelete.onclick = deleteItem;
    spanDone.onclick = updateDone;

    li.appendChild(spanDone);
    li.appendChild(spanTodo);
    li.appendChild(spanDelete);

    return li;
}

function updateDone(e) {
  var spanClicked = e.target.id;
  console.log("you clicked this span" + id);
 }

ここでの私の目標は、ユーザーがクリックしたときにspanDoneを更新することです。todoItemというコードで以前に作成したオブジェクトから取得する個別のIDを各スパンに割り当てる必要があります。「idが定義されていません」というエラーが表示され続けますが、コンソールを見ると。なぜそこにIDを割り当てられないのかわかりません。todoItem IDでspanDoneを割り当てることができるようにコードを変更する方法に関する提案はありますか?

4

1 に答える 1

1

代わりに変数を使用するつもりでしたか?

function updateDone(e) {
  var spanClicked = e.target.id;
  console.log("you clicked this span" + spanClicked);
}
于 2013-02-21T17:07:27.053 に答える