如何删除搜索项目并从数组中删除该项目?

时间:2017-07-29 17:58:10

标签: javascript

我有一个搜索字段,在该字段中我可以搜索一个项目。然后我必须删除它,但遗憾的是我没有t know how I can remove that item. Please, could you help me with that. I tried the following: If id of currentRobot is equal to当前ID`然后删除该项目,但我想这不太正确,因为它不起作用 enter image description here 我的代码

$(document).ready(function(){
    var currentRobot=null;

    for( var i=0; i<robots.length; i++){

        var robot = document.createElement('div');

        robotsContainer.appendChild(robot);

        robot.className='whole-block';  
        robot.setAttribute('id', robots[i].id);


        robot.innerHTML += "<img src='" + robots[i].avatar + "'>";
        robot.innerHTML += "<h3>" +robots[i].first_name + "</h3>";
        robot.innerHTML += "<h3>" +robots[i].last_name + "</h3>";
        robot.innerHTML += "<p>" +robots[i].email + "</p>";
        robot.innerHTML += "<p>" +robots[i].gender + "</p>";
        robot.innerHTML += "<p>" +robots[i].friends + "</p>";

    }   
        console.log(value)
    value.onkeyup = function(e){
        currentRobot=e.target.value;
        var robots = document.querySelectorAll("div[id]:not([id='"+ this.value +"']):not([id='robotsContainer'])");
        for(var i = 0; i < robots.length; i++ ){
            if(this.value==""){ 
                robots[i].style.display="block";
            } else {
                robots[i].style.display="none";
            }
        };

    };


 var button= document.getElementById('button');  
        button.addEventListener('click', function(e){
             e.preventDefault(); 

        for(var i = 0; i < robots.length; i++){
                if (robots[i].id ===  currentRobot) robots.splice(i, 1);

        }
        }, false);

});

2 个答案:

答案 0 :(得分:0)

您正在指定<xsl:template match="/catalog"> <xsl:text>singer,title&#xA;</xsl:text> <xsl:for-each select="cd"> <xsl:value-of select="concat(singer/name, ' ', singer/surname, ', ', title, '&#xA;')" /> </xsl:for-each> </xsl:template>

currentRobot

然后你要比较它的值

currentRobot=e.target.value;

我的预感是 if (robots[i].id === currentRobot) robots.splice(i, 1); currentRobot的类型不同。在比较之前尝试添加

robots[i.id

它们需要具有相同的数据类型才能进行此比较。

另外,请记住,数组的第一个索引是console.log( currentRobot, robots[i].id); 而不是0

答案 1 :(得分:0)

在不知道全局robots是什么的情况下,我们必须猜测。

1。 robots是一个真正的数组

如果robots是真正的JavaScript数组,那么从数组中删除应该与splice一起使用,但是:

  • 你应该尽快退出循环
  • 此删除不会对您的网页产生任何影响

因此,您的代码可以按如下方式处理:

所以替换这个:

if (robots[i].id === currentRobot) robots.splice(i, 1);

..用:

if (robots[i].id === currentRobot) {
    var node = document.getElementById(currentRobot);
    node.parentNode.removeChild(node);
    robots.splice(i, 1);
    break; // and exit loop!
}

2。 robots是HTML集合

如果您的全局变量robots是HTML集合,那么它就像数组一样,但不是真正的数组,因此您无法对它们应用splice。相反,你必须使用DOM方法。

然后替换它:

if (robots[i].id === currentRobot) robots.splice(i, 1);

..用:

if (robots[i].id === currentRobot) {
    robots[i].parentNode.removeChild(roots[i]);
    break; // and exit loop!
}

你需要退出循环,因为在变异的HTML Collection上继续循环会很尴尬,而且也没有必要,因为你只希望一个匹配。