javascript - 使用 vanilla javascript 添加与类名匹配的增量数据属性
问题描述
我正在尝试将增量数据属性设置为具有通用类名的一系列 div。
例如,我有这些 div:
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
我想做的是这样的:
<div class="field__item" data-foo="1">Test</div>
<div class="field__item" data-foo="2">Test</div>
<div class="field__item" data-foo="3">Test</div>
<div class="field__item" data-foo="4">Test</div>
<div class="field__item" data-foo="5">Test</div>
<div class="field__item" data-foo="6">Test</div>
<div class="field__item" data-foo="7">Test</div>
<div class="field__item" data-foo="8">Test</div>
我一直在做这样的事情:
const el = document.querySelector('.field__item');
let a = 1;
el.setAttribute('data-foo', (a++));
但这只会设置第一个 div,我不知道如何让它使用类似 a 的东西forEach
来为所有这些设置数据属性。我正在尝试这个:
const item = document.querySelectorAll(".field__item");
Array.prototype.forEach.call(item, function(elements, index) {
let a = 1;
item.setAttribute("data-foo", a++);
});
但是那个错误item.setAttribute is not a function.
接受任何建议。
解决方案
您可以.forEach()
直接从返回的NodeList调用querySelectorAll()
a的第一个参数.forEach()
是当前元素,第二个参数是当前索引
const item = document.querySelectorAll(".field__item");
item.forEach((element, index) => {
element.setAttribute('data-foo', index);
});
// Just to demo the data change
item.forEach(element => console.log(element.getAttribute('data-foo')));
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
<div class="field__item">Test</div>
推荐阅读
- angular-material - mat-icons toggle_on 和 toggle_off 不可见
- angular - 有没有办法在组件上使用 NgbDatepicker 的 navigateTo(),而不是在 ngAfterViewInit() 上使用它?
- google-workspace - 在 GSuite 中,是否可以为公司拥有的设备定义一个策略,为用户拥有的设备定义另一个策略
- c# - 特定属性上的 C# Sum 对象列表
- clickhouse - Clickhouse 表卡在只读模式
- c++ - 如何检查函数中的数组长度?
- node.js - 如何避免在对象内部创建对象并使用猫鼬将元素直接推送到快速数组中?
- r - R ggplot颜色箱宽度看起来不相等
- spring - 如何从 Junit5 中的配置中获取 DataSource bean
- flutter - 使用带有大量数据的 Dio 发送请求时,Flutter 应用程序正在关闭