列出重复的项目

时间:2017-05-13 11:45:36

标签: javascript

我的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);
    }
}

1 个答案:

答案 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