簡體   English   中英

如何將商品添加到此購物清單

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM