从数组中删除javascript

从数组中删除javascript,javascript,Javascript,我在一个数组中循环并在屏幕上显示它。不过我有个问题。我尝试添加一个函数,当你点击文本时,它会删除点击的文本。这是我的密码: var div = document.querySelector('div'); var array = [ "Banana", "Chocolate", "Oranges" ]; for(let i = 0; i < array.length; i++){ var p = document.createElement('p'); p.textContent =

我在一个数组中循环并在屏幕上显示它。不过我有个问题。我尝试添加一个函数,当你点击文本时,它会删除点击的文本。这是我的密码:

var div = document.querySelector('div');
var array = [
"Banana",
"Chocolate",
"Oranges"
];

for(let i = 0; i < array.length; i++){

var p = document.createElement('p');
p.textContent = array[i];
div.appendChild(p);

p.onclick = function(){

    array.splice(array[i], 1);
    console.log(array);
}

}
var div=document.querySelector('div');
变量数组=[
“香蕉”,
“巧克力”,
“橙子”
];
for(设i=0;i
当我单击它时,它会从数组中删除该项并将其记录到控制台。但它不会显示在屏幕上。有什么帮助吗

谢谢,, 对(设i=0;ifor(let i = 0; i < array.length; i++){ let p = document.createElement('p');//note the block scoping p.textContent = array[i]; div.appendChild(p); p.onclick = function(){ array.splice(i, 1);//splice wants an index... p.remove();//remove el from document tree console.log(array); } } 设p=document.createElement('p');//注意块范围 p、 textContent=数组[i]; 儿童组(p); p、 onclick=function(){ splice(i,1);//splice需要索引。。。 p、 remove();//从文档树中删除el console.log(数组); } }
您可能还想删除html元素?

给您:

var div = document.querySelector('div');
var array = [
"Banana",
"Chocolate",
"Oranges"
];

for (let i = 0; i < array.length; i++) {
  let p = document.createElement('p'); //note the block scoping
  p.textContent = array[i];
  div.appendChild(p);

  p.onclick = function() {
    array.splice(array.indexOf(this), 1); //splice wants an index...
    this.remove(); //remove el from document tree
    console.log(array);
  }

}
var div=document.querySelector('div');
变量数组=[
“香蕉”,
“巧克力”,
“橙子”
];
for(设i=0;i

你似乎很接近。您已经从数组中删除了元素,但没有从DOM中删除,这就是您无法在html中看到更新的元素的原因

for(let i = 0; i < array.length; i++){
var p = document.createElement('p');//note the block scoping
p.textContent = array[i];
div.appendChild(p);

p.onclick = function(){
    array.splice(i, 1);
    this.remove();//also remove from the DOM
    console.log(array);
}

}
for(设i=0;i
为什么会这样?您不接触段落元素对象。删除后需要用新数组替换“p”的内容,而不是数组。拼接(i,1)?是的,我知道,但它不起作用,它只是删除了最后一次迭代。是的,我试图删除段落,但它不起作用。它刚刚删除了最后一个迭代。@Scratch Cat note第二行。。。在使用p.remove()时,p必须是块作用域。你也可以用这个.remove()来代替,那没关系……不用担心,我已经修好了。我没有使用p.remove(),而是使用了这个.remove()。谢谢。@ScratchCat我已经更新了代码,以反映这一变化以及其他一些变化。我删除了抓取文本内容的变量,只是使用了“this”。当这个问题解决时,你可能会在某个地方打上绿色的复选标记。然而,在第二行接受我的评论是没有意义的(var是函数范围…)