从数组javascript中删除

时间:2017-06-07 20:10:26

标签: 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 = array[i];
div.appendChild(p);

p.onclick = function(){

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

}

当我点击它时,它会从数组中删除该项并将其记录到控制台。但它并没有在屏幕上显示。有什么帮助吗?

谢谢你, 划痕猫

3 个答案:

答案 0 :(得分:1)

你走了:

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

}

https://jsfiddle.net/wt0fux3f/6/

答案 1 :(得分:1)

你好像很亲密。您已从数组中删除了元素,但未从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);
}

}

答案 2 :(得分:0)

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(i, 1);//splice wants an index...
    p.remove();//remove el from document tree
    console.log(array);
}

}

您可能还想删除html元素?