我正在尝试添加一个名为"taskList"的列表的元素,该列表由从input元素获得的值组成。
有人能帮帮我吗,我不明白为什么列表中的元素没有显示。
var taskList = [];
var input = document.getElementById('takeInput');
var button = document.getElementById('addInput');
button.onclick = function(){
var nHTML = '';
var userEnteredText = input.value;
taskList.push(userEnteredText);
taskList.forEach(function(task){
nHTML += '<li>'+task+'</li>';
});
document.getElementsByClassName('taskLists').innerHTML = '<ul>' + nHTML + '</ul>';
}
<div class="wrapper">
<header>To-Do List</header>
<div class="taskAdder">
<input id="takeInput" type="text" placeholder="Add your new To-Do">
<button id="addInput" class="button" type="button" >➕</button>
</div>
<div class="taskLists">
</div>
<div class="footer">
<span> You have <span class="pendingTasks"></span> tasks left </span>
<button type="button" class="button">Clear All</button>
</div>
</div>
我试着检查了几次,但HTML文档中没有任何内容更新
3条答案
按热度按时间zujrkrfu1#
不应该追加到
innerHTML
,而是使用createElement
生成li
,然后将新元素的innerHTML
设置为input.value
,并使用appendChild
将其追加到列表中ny6fqffe2#
主要的错误是使用
.getElementsByClassName
时好像它只是一个元素而不是一个列表(不要忽略元素中的***s***!)无论如何,我稍微重构了你的代码,使其每个目标都有更好的策略,并实现了清除任务列表的逻辑。
eqqqjvef3#
您只需要在任务列表中使用一个ID。
getElementsByClassName需要一个索引,这使得您的问题与What do querySelectorAll and getElementsBy* methods return?相同:
第一个月
也就是说,这里是一个完整的版本,使用了推荐的eventListener和相关的ID。