html中用无序列表表示数组,从无序列表或有序列表中添加和删除数组的元素

本文档描述了在JavaScript中处理无序列表元素的点击事件时遇到的问题。作者试图通过添加和删除元素的类来实现选择和取消选择功能,并将选定元素存储在数组中。然而,当尝试从数组中删除已选择的重复元素时,代码出现错误,仅删除了数组的最后一个元素。作者尝试了多种方法,包括获取元素在数组中的索引并删除该索引处的元素,但问题仍未解决。
摘要由CSDN通过智能技术生成

我有一个随机元素的无序列表:

  • First
  • Second
  • Third

You have selected:

我在无序列表的所有元素上添加了一个事件监听器。

var elems = document.getElementsByTagName('li');

var selected;

var arr1 = [];

Array.from(elems).forEach(v => v.addEventListener("click", onClickItems,false));

我创建了一个在单击无序列表元素时切换的函数,因此我可以在元素中添加元素或从元素中删除元素。

function onClickItems() {

this.classList.toggle('selected');

if (this.classList.contains('selected')){

selected = this.innerHTML;

arr1.push(selected);

document.getElementById("result").innerHTML = arr1.join("
");

} else {

lookValueArray(returenIndex());

document.getElementById("result").innerHTML = arr1.join("
");

}

}

添加部分工作正常但是当用户从无序列表中选择相同的元素以将其删除时,它将无法正常工作。它只删除已添加到数组中的最后一个元素。

所以,我创建了这两个函数:

第一个,用于存储所选元素进入数组时的索引。

function returenIndex () {

var indexx = arr1.indexOf(selected);

return(indexx);

}

第二个,从无序列表中查找所选索引的值,如果它等于所选索引,则将其删除。

function lookValueArray (inde1) {

if (arr1[inde1].value = selected) {

arr1.splice(inde1, 1);

}

}

仍然是相同的输出。它添加完美但它不会删除它。此外,它只会删除最后一个元素输入到数组中,即使我选择了第二个要删除的元素。

BTW,我尝试使用arr1.splice(0, 0, selected)而不是arr1.push(selected),所以我可以让元素在特定位置进入数组但是也不会有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值