【发布时间】:2019-01-08 15:14:44
【问题描述】:
我是 js 和 jquery 的新手,需要帮助将我的代码从 jquery 重写为纯 js。
我有几个父 div。它们每个里面都有一个子 div。
我想向子级和父级添加一个类,但作为数据名称中的属性值添加到父级。
类名存储在一个数组中,换句话说,第一个父级及其子级将获得一个 array[0] 类名,第二个父级及其子级 - array[1] 类名,等等。
我用这个 jquery 来做这个
$(".back").each(function(i) {
$(this).addClass(tile_array[i]);
$(this).parent().attr("data-name", tile_array[i]);
});
我尝试用js重写如下:
var backs = document.querySelectorAll('back');
for (let i = 0; i < backs.length; i++) {
for (let j = 0; j < tile_array.length; j++) {
backs[i].classList.add(tile_array[j]);
backs[i].parentNode.setAttribute("data-name", tile_array[j]);
}
}
但是,这不起作用。我应该如何重写我的代码以使其正常工作?
提前致谢!
【问题讨论】:
-
你有一个错字 -
querySelectorAll('back')中缺少一个类选择器 -
除了@RoryMcCrossan 指出的错别字之外,我猜你也不希望
tile_array中的所有内容都应用于每个单独的“backs”,所以如果你删除内部循环和使用tile_array[i],你应该有一个从数组中元素到类的一对一映射,不是吗? -
你也不需要第二个
for (let j = 0; j < tile_array.length; j++) { -
$(this).parent("div').attr("data-name", tile_array[i]);
-
非常感谢所有贡献的人!!!我更正了错字并删除了一个内循环!一切都很完美!你在摇摆,男人们!!!
标签: javascript jquery html