2013-02-21 37 views
1
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。我需要爲每個span指定一個單獨的id,我將從之前在我的代碼中創建的一個對象中獲得一個名爲todoItem的對象。當我查看我的控制檯時,雖然我不斷收到錯誤「ID未定義」。我不明白爲什麼我不能在那裏分配id。有關如何修改我的代碼以便我可以將todoItem id分配給spanDone的任何建議?用setAttribute指定id

+0

該錯誤涉及哪一行? – isherwood 2013-02-21 17:04:11

+0

最後一行console.log(「你點擊了這個範圍」+ id) – user2084813 2013-02-21 17:05:20

回答

1

你的意思是使用你的變量嗎?

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

是的,我剛剛意識到這一點,所以很抱歉這一個 – user2084813 2013-02-21 17:08:48

+0

嘿,這一切都很好。接受答案(點擊勾號),我們甚至。 :-) – isherwood 2013-02-21 17:09:54

+0

喲,新人...回到這裏,並支付吹笛者!你知道,我爲積分工作。這個世界上沒有什麼是免費的。 ;-) – isherwood 2013-02-21 17:24:55