【发布时间】:2021-01-09 08:24:02
【问题描述】:
我有一个 JS foreach 函数,如下所示:
编辑:我的最小可重现示例
var liArray = document.getElementsByClassName("listItem");
liArray.forEach(function(item) {
if (item.getAttribute("data-code").substring(0, 2) == 15) {
console.log("success");
}
});
<ul>
<li class="item>
<div data-code="151" class="listItem">example</div>
</li>
<li class="item>
<div data-code="152" class="listItem">example</div>
</li>
<li class="item>
<div data-code="153" class="listItem">example</div>
</li>
<li class="item>
<div data-code="154" class="listItem">example</div>
</li>
<li class="item>
<div data-code="155" class="listItem">example</div>
</li>
<li class="item>
<div data-code="156" class="listItem">example</div>
</li>
</ul>
比我在控制台中获得的success 的次数150 次。但是当我将console.log 更改为item.className = "disabled" 时。喜欢:
liArray.forEach(function(item) {
if (item.getAttribute("data-code").substring(0, 2) == 15) {
item.className = 'disabled';
}
});
事实证明,只有一半 (75) 的项目具有 disabled 类。
我不知道我的代码出了什么问题。
希望有人能帮忙,谢谢!
【问题讨论】:
-
请显示更多上下文。以下是最有可能的两种可能性: 1. 您正在运行此功能两次; 2.你的
liArray有重复。 -
仅供参考:如果您有
data-*属性,您可以使用dataset 属性。例如:item.dataset.code与您的item.getAttribute("data-code")相同。 -
@FelixKling 对不起,我已经添加了有关此问题的更多详细信息。
-
@Reyno 感谢您的信息!这里的
data-code是自定义数据,所以这个方法不行。
标签: javascript foreach