我有一个搜索字段,在该字段中我可以搜索一个项目。然后我必须删除它,但遗憾的是我没有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`然后删除该项目,但我想这不太正确,因为它不起作用
我的代码
$(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);
});
答案 0 :(得分:0)
您正在指定<xsl:template match="/catalog">
<xsl:text>singer,title
</xsl:text>
<xsl:for-each select="cd">
<xsl:value-of select="concat(singer/name, ' ', singer/surname, ', ', title, '
')" />
</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
是什么的情况下,我们必须猜测。
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!
}
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上继续循环会很尴尬,而且也没有必要,因为你只希望一个匹配。