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")
}
或用循環
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")
}
}
}
+1這個答案是正確的。雖然我沒有看到'filter'和'forEach'的好處。 – 2012-04-30 14:16:17
@amnotiam減少過濾器和forEach爲一個語句是一個微觀優化。當然你可以使用if for eachEach。 – Raynos
不擔心優化。只是更乾淨的代碼希望我可以給另一個+1,以便在StackOverflow上省略分號。 – 2012-04-30 14:20:10