[英]How do I add items to this shopping list
我無法讓這段代碼工作,但我不知道為什么。 我需要將我鍵入的內容作為項目添加到列表中。
我知道有更好的方法可以實現這一結果,但我正在努力了解基本原理。 請使用下面的變量解釋我做錯了什么:
let input = document.getElementsByTagName("input")[0]; const button = document.getElementsByTagName("button")[0]; let ul = document.getElementsByTagName("ul")[0]; button.addEventListener("click", function(){ // create a list item let li = document.createElement("li"); // create text node const liText = document.createTextNode(input.value); //append text to li: <li> input value </li> let newLi = li.appendChild(liText); //append li to ul let newList = ul.appendChild(newLi); return newList; });
<,DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width. initial-scale=1.0"> <title>Shopping List</title> </head> <body> <h1>Shopping List</h1> <h2>Get it done today</h2> <input type="text" placeholder="enter items"> <button>Enter</button> <ul> <li>Notebook</li> <li>Jello</li> <li>Spinach</li> <li>Rice</li> <li>Birthday Cake</li> <li>Candles</li> </ul> <script src="script.js"></script> </body> </html>
謝謝!
Append 你的li
,而不是appendChild()
到ul
的結果。
let input = document.getElementsByTagName("input")[0]; const button = document.getElementsByTagName("button")[0]; let ul = document.getElementsByTagName("ul")[0]; button.addEventListener("click", function(){ // create a list item let li = document.createElement("li"); // create text node const liText = document.createTextNode(input.value); //append text to li: <li> input value </li> li.appendChild(liText); //append li to ul ul.appendChild(li); });
<,DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width. initial-scale=1.0"> <title>Shopping List</title> </head> <body> <h1>Shopping List</h1> <h2>Get it done today</h2> <input type="text" placeholder="enter items"> <button>Enter</button> <ul> <li>Notebook</li> <li>Jello</li> <li>Spinach</li> <li>Rice</li> <li>Birthday Cake</li> <li>Candles</li> </ul> <script src="script.js"></script> </body> </html>
另一種方法是:
let input = document.getElementsByTagName("input")[0]; const button = document.getElementsByTagName("button")[0]; let ul = document.getElementsByTagName("ul")[0]; button.addEventListener("click", function(){ // create a list item let li = document.createElement("li"); //append text to li: <li> input value </li> li.textContent = input.value; //append li to ul ul.appendChild(li); });
<,DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width. initial-scale=1.0"> <title>Shopping List</title> </head> <body> <h1>Shopping List</h1> <h2>Get it done today</h2> <input type="text" placeholder="enter items"> <button>Enter</button> <ul> <li>Notebook</li> <li>Jello</li> <li>Spinach</li> <li>Rice</li> <li>Birthday Cake</li> <li>Candles</li> </ul> <script src="script.js"></script> </body> </html>
如此處所寫:
返回的值(
appendChild
)是附加的孩子
這意味着當您 append 到ul
newLi
時,您實際上 append 是文本節點liText
,而不是li
元素。 這就是為什么您不將其視為列表項的原因。
只需像這樣使用 li :
let input = document.getElementsByTagName("input")[0]; const button = document.getElementsByTagName("button")[0]; let ul = document.getElementsByTagName("ul")[0]; button.addEventListener("click", function() { // create a list item let li = document.createElement("li"); // create text node const liText = document.createTextNode(input.value); //append text to li: <li> input value </li> li.appendChild(liText); //append li to ul let newList = ul.appendChild(li); return newList; });
<h1>Shopping List</h1> <h2>Get it done today</h2> <input type="text" placeholder="enter items"> <button>Enter</button> <ul> <li>Notebook</li> <li>Jello</li> <li>Spinach</li> <li>Rice</li> <li>Birthday Cake</li> <li>Candles</li> </ul>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.