2 回答

TA貢獻1874條經驗 獲得超12個贊
這里有很多錯誤。但主要問題是返回一個集合而不是單個元素。因此,您需要遍歷該集合才能與元素進行交互:getElementsByClassName
let buttons = document.getElementsByClassName('addbutton');
for (let b of buttons) {
b.addEventListener('click', function() {
newElement();
});
}
除此之外,您還有各種拼寫錯誤,其中使用了不正確的函數名稱(JavaScript區分大小寫,因此應該如此),并且在您打算使用變量(而不是,而不是)的地方使用字符串。appendchildappendChild'li'li'lichild'lichild
我懷疑你的意思是這樣寫的:
function newElement() {
var inputval = document.getElementById('inputnewlist').value;
var li = document.createElement('li');
var lichild = document.createTextNode(inputval);
li.appendChild(lichild);
if (inputval === '') {
alert('you must put something in the textbox!');
} else {
document.getElementById('mylist').appendChild(li);
}
document.getElementById('inputnewlist').value = "";
}
let buttons = document.getElementsByClassName('addbutton');
for (let b of buttons) {
b.addEventListener('click', function() {
newElement();
});
}
<div id="formcontainer">
<h2 class="title"> To Do List </h2>
<label for="inputnewlist"> Add To List</label>
<input type="text" name="inputnewlist" id="inputnewlist" placeholder="Add thing to do..">
<button class="addbutton">Add</button>
</div>
<ul id="mylist">
<li> hi hehe <span class="exit"> x </span></li>
</ul>

TA貢獻1847條經驗 獲得超7個贊
document.getElementsByClassName
返回一個集合,您希望訪問集合中的第一個元素
改變
document.getElementsByClassName('addbutton').addEventListener(...)
自
document.getElementsByClassName('addbutton')[0].addEventListener(...)
或者您可以使用返回第一個匹配元素的元素querySelector
document.querySelector('.addbutton').addEventListener(...)
添加回答
舉報