问题描述
我有一个数组 arrayDescr
,我需要使用 forEach
向每个 <li>
添加一个属性 data-value
。 data-value
的值应该是一个 arrayDescr
元素。例如,我有三个 <li>
和两个 arrayDescr
元素。三个 <li>
中的两个应该具有属性 data-value
arrayDescr[0]
、[1] 等。
这段代码有效,但我需要它在 forEach 中工作:
$("#name1").attr("data-value",arrayDescr[0])
#name 应该是 function(){return 'name' (i+1)}。
在 forEach 中,此代码返回 undefined
:
arrayDescr.forEach(function(item,index){
$("li").attr("data-value",item[index])}
解决方法
这是一个普通的解决方案
var elem = document.querySelectorAll('li');
for (let i = 0; i < elem.length; i++) {
elem[i].setAttribute("data-value","set value here,or determine how to make it dynamic"+i);
}
我还没有对它进行过测试,但我相信这在没有 JQuery 的情况下应该可以满足您的需求,并且在许多浏览器(包括移动设备)上都可以接受。
for (let i = 0; i < elem.length; i++) {
elem[i].setAttribute("data-value",(YourDescArray[i] !== undefined)?YourDescArray[i]:"problem");
}
,
我认为您应该迭代 li
元素并在 forEach
中设置它们的属性,例如
$("li").each(function(i,item){
if(arrayDescr.length > i)
$(item).attr("data-value",arrayDescr[i]);
});
,
您可以像下面这样迭代 li 元素并分配 attr
$( "li" ).each(function( index ) {
if(index<arrayDescr.length){
$( this ).attr("data-value",arrayDescr[index]) ;
}
});