我的JavaScript代码有问题。我有一个对象。在该对象内部是两个对象。他们有一个名为' name'和一个名为' description'的数组。我遍历这些项目并显示他们的名字'。单击某个项目时,我将单击的项目传递给新函数。
在新功能中,我遍历了它的描述'数组并显示列表项。问题是,当我点击一个时,我想删除我点击的前一个的描述,并替换为我刚刚点击的那个。这是代码:
/* items object which contains two objects that
contain a name and a description array*/
var items = {
item1: {
name: 'item1',
description: [
'bye from item1',
'hello from item1'
]
},
item2: {
name: 'item2',
description: [
'bye from item2',
'hello from item2'
]
}
}
/*Looping through objects in the items object and displaying their
name in a list*/
for(let i in items){
var listItem = document.createElement('li');
listItem.textContent = items[i].name;
ol.appendChild(listItem);
/*calling function when item is clicked, passing in the
clicked item*/
listItem.onclick = function(){
newFunction(items[i]);
}
}
/*function for displaying description array of the clicked item, invoked
when item is clicked*/
function newFunction(passedListItem){
for(var i = 0; i < passedListItem.description.length; i++){
var listItem = document.createElement('li');
listItem.textContent = passedListItem.description[i];
ul.appendChild(listItem);
}
}
答案 0 :(得分:0)
好吧,如果你只有ul中的描述,你可以删除所有的孩子:
while (ul.firstChild) {
ul.removeChild(ul.firstChild);
}
否则,您必须存储要删除的元素数量,如下所示:
将toRemove = 0
放在函数声明之前:
toRemove = 0;
function newFunction(passedListItem){
然后在函数中删除toRemoventh最后一个孩子
while((toRemove > 0) && (ul.lastChild)){
ul.removeChild(ul.lastChild);
toRemove -= 1;
}
然后,设置为删除新描述的编号
toRemove = passedListItem.description.length