Mar*_*ian 4 javascript selector nodes
我正在尝试用javascript选择父级的每个第三个元素,并为其添加一个css类.对我来说听起来很简单,但我无法让它发挥作用.我发现这个线程对我来说看起来很不错,但是我用javascript这样的wuss,我的尝试没有解决:
var nodes = document.getElementsByClassName("ParentsClassName").childNodes;
for(i=0; i<nodes.length; i+=3) {
this.className += ' newClassName';
}?
Run Code Online (Sandbox Code Playgroud)
当我加载它时,根本没有任何事情发生.
任何修复,eyeopeners和技巧赞赏.
问候,玛丽安
var parents = document.getElementsByClassName("someClass"),
forEach = Array.prototype.forEach.call.bind(Array.prototype.forEach),
filter = Array.prototype.filter.call.bind(Array.prototype.filter)
forEach(parents, addClassToEveryThirdChild)
function addClassToEveryThirdChild(parent) {
filter(parent.children, selectEveryThirdChild)
.forEach(addSomeClass)
}
function selectEveryThirdChild(elem, i) {
return i % 3 === 0
}
function addSomeClass(elem) {
elem.classList.add("newClassName")
}
Run Code Online (Sandbox Code Playgroud)
或者循环
var parents = document.getElementsByClassName("someClass")
for (var i = 0, ii = parents.length; i < ii; i++) {
var parent = parents[i],
children = parent.children
for (var j = 0, jj = children.length; j < jj; j++) {
var elem = children[j]
if (j % 3 === 0) {
elem.classList.add("newClassName")
}
}
}
Run Code Online (Sandbox Code Playgroud)
我发现确定每三分之一的最直接方法是在做模数时将 1 添加到索引:
var nodes = //get nodes
for(var i = 0; i < nodes.length; i++) {
var isThirdIteration = (i + 1) % 3 === 0;
if (isThirdIteration) {
this.className += ' newClassName';
}
}?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9415 次 |
| 最近记录: |