Skip to content

Commit

Permalink
support multi things with getElementsByClassName
Browse files Browse the repository at this point in the history
  • Loading branch information
Raynos committed Jul 18, 2014
1 parent 0117257 commit 6b0f9b9
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 14 deletions.
23 changes: 10 additions & 13 deletions document.js
Original file line number Original file line Diff line number Diff line change
@@ -1,3 +1,5 @@
var domWalk = require("dom-walk")

var DOMText = require("./dom-text.js") var DOMText = require("./dom-text.js")
var DOMElement = require("./dom-element.js") var DOMElement = require("./dom-element.js")
var DocumentFragment = require("./dom-fragment.js") var DocumentFragment = require("./dom-fragment.js")
Expand Down Expand Up @@ -69,20 +71,15 @@ proto.getElementsByClassName = function getElementsByClassName(classNames, paren
parent = this.body parent = this.body
} }


if (parent.className === classNames) { var elems = []
return [parent]
}


var arr = parent.childNodes domWalk(parent, function (node) {
var result = null var classes = node.className.split(" ")


if (!arr) { if (classes.indexOf(classNames) !== -1) {
return result elems.push(node)
} }
})


for (var i = 0, len = arr.length; !result && i < len; i++) { return elems
result = getElementsByClassName(classNames, arr[i])
}

return result
} }
4 changes: 3 additions & 1 deletion package.json
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
"url": "https://github.com/Raynos/min-document/issues", "url": "https://github.com/Raynos/min-document/issues",
"email": "raynos2@gmail.com" "email": "raynos2@gmail.com"
}, },
"dependencies": {}, "dependencies": {
"dom-walk": "^0.1.0"
},
"devDependencies": { "devDependencies": {
"run-browser": "git://github.com/Raynos/run-browser", "run-browser": "git://github.com/Raynos/run-browser",
"tap-dot": "^0.2.1", "tap-dot": "^0.2.1",
Expand Down
16 changes: 16 additions & 0 deletions test/test-document.js
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -125,6 +125,22 @@ function testDocument(document) {
assert.end() assert.end()
}) })


test("can getElementsByClassName for many elements", function (assert) {
function h(className) {
var div = document.createElement("div")
div.className = className
return div
}

document.body.appendChild(h("multi-class-bar"))
document.body.appendChild(h("multi-class-bar"))

var elems = document.getElementsByClassName("multi-class-bar")
assert.equal(elems.length, 2)

assert.end()
})

test("can create/manipulate textnodes", function (assert) { test("can create/manipulate textnodes", function (assert) {
var textnode = document.createTextNode("hello") var textnode = document.createTextNode("hello")


Expand Down

0 comments on commit 6b0f9b9

Please sign in to comment.