gpt4 book ai didi

javascript - 为什么.splice总是删除最后一个元素?

转载 作者:行者123 更新时间:2023-11-28 02:02:10 25 4
gpt4 key购买 nike

在 JavaScript 中,有两个数组:tags[]tags_java[]。我使用 .splice 删除两个数组中具有相同索引的某些项目。 tags[] 工作正常,但 tags_java 不行,它似乎总是删除最后一项。
这是代码the jsfiddle link

var tag = $(this).text();
var index = $.inArray(tag, tags);
tags.splice(index,1);
tags_java.splice(index,1);

最佳答案

不,两者都不起作用,因为您实际上没有找到标记的正确索引。

为什么不呢?因为 $(this).text() 包含您添加的删除标记, × - 例如“早上×”。由于它不在您的 tags 数组中,因此 index 将为 -1。 tags.splice(-1, 1); 将从数组末尾删除 1 项。

一般来说,使用演示文本(即标记元素的文本)作为数据(例如,使用该文本作为数组中的查找值)从来都不是一个好主意。当演示文稿发生变化时,它很可能会被破坏 - 就像这里一样。因此,建议将数据(查找标签所需的数据)存储为数据 - 例如使用 jQuery 提供的 data() API - 即使它看起来多余。

这是一个简单的示例 - 只需添加/替换两行,我用以“JT”开头的注释标记了它们:JSFiddle

现在,我们不再通过 $(this).text() 进行查找,而是通过 $(this).data( 存储的数据值“tagValue”进行查找) - 这样,查找值仍然绑定(bind)到元素,但我们不依赖于演示文本。

关于javascript - 为什么.splice总是删除最后一个元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18303280/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com