2013-01-04 41 views
0

我試圖做的是使用querySelectorAll()函數來創建一個循環,我可以定位我使用,我創建了getInput()功能創建的每個新<li/>元素(這工作正常)。我想用console.log()來測試這個,所以當我點擊每個<li/>項目時,它確認我已經在控制檯中這樣做了。這種方法對我來說是新的,我也是一般學習JavaScript的新手。所以,任何建議和解釋都會很有幫助。謝謝。使用querySelectorAll創建新創建的元素

function getInput() { 
    var liValue = theForm.elements.input.value; 
    var liNew = document.createElement("li"); 
    liNew.innerHTML += liValue; 
    var list = document.getElementById("ulList"); 
    list.appendChild(liNew); 
    deleteLi; 
} 

function deleteLi() { 
    var handlers = document.querySelectorAll("li"); 
    for (var i = 0; i < handlers.lenghth; i++) { 
     handlers[i].onclick = console.log("you got me"); 
    } 
} 
+1

您是否考慮過爲此目的只爲新創建的節點添加CSS類? – Roonaan

+0

我可能錯過了一些明顯的東西,但我不太明白你希望我們提供什麼幫助。你當前的代碼出了什麼問題? –

+0

也許它只是'handlers.lenghth',應該是'handlers.length'? – bfavaretto

回答

1

只需在創建元素時添加點擊處理程序即可。按照您發佈的方式運行qSA,並選擇所有li元素,即使您已經創建了這些元素。

function getInput() { 
    var liValue = theForm.elements.input.value; 
    var liNew = document.createElement("li"); 
    liNew.onclick = function() { console.log("clicked!"); }; 
    liNew.innerHTML += liValue; 
    var list = document.getElementById("ulList"); 
    list.appendChild(liNew); 
}