min-document
Advanced tools
Comparing version 2.10.0 to 2.11.0
@@ -66,5 +66,3 @@ var domWalk = require("dom-walk") | ||
proto.getElementsByClassName = function getElementsByClassName(classNames, parent) { | ||
if (classNames.indexOf(" ") != -1) { | ||
throw new Error("Not yet implemented: getElementsByClassName for multiple class names"); | ||
} | ||
var classes = classNames.split(" "); | ||
@@ -78,6 +76,8 @@ if (!parent) { | ||
domWalk(parent, function (node) { | ||
var className = node.className || "" | ||
var classes = className.split(" ") | ||
var nodeClassName = node.className || "" | ||
var nodeClasses = nodeClassName.split(" ") | ||
if (classes.indexOf(classNames) !== -1) { | ||
if (classes.every(function (item) { | ||
return nodeClasses.indexOf(item) !== -1 | ||
})) { | ||
elems.push(node) | ||
@@ -84,0 +84,0 @@ } |
{ | ||
"name": "min-document", | ||
"version": "2.10.0", | ||
"version": "2.11.0", | ||
"description": "A minimal DOM implementation", | ||
@@ -5,0 +5,0 @@ "keywords": [], |
@@ -144,2 +144,34 @@ var test = require("tape") | ||
test("can getElementsByClassName for many classes", function(assert) { | ||
function append_div(classNames, parent) { | ||
var div = document.createElement("div") | ||
div.className = classNames | ||
parent.appendChild(div) | ||
return div | ||
} | ||
function assertMatch(classNames, expectedElements) { | ||
var result = document.getElementsByClassName(classNames) | ||
assert.equal(result.length, expectedElements.length) | ||
for (var i = 0; i < expectedElements.length; i++) { | ||
assert.notEqual(expectedElements.indexOf(result[i]), -1) | ||
} | ||
} | ||
var divXYZ = append_div("X Y Z", document.body) | ||
var divYZ = append_div("Y Z", document.body) | ||
var divZX = append_div("Z X", document.body) | ||
var divX1X2 = append_div("X1 X2", divXYZ) | ||
var divX1X2Y1 = append_div("X1 X2 Y1", divXYZ) | ||
assertMatch("X", [divXYZ, divZX]) | ||
assertMatch("Y Z", [divXYZ, divYZ]) | ||
assertMatch("X Y Z", [divXYZ]) | ||
assertMatch("X1 X2", [divX1X2, divX1X2Y1]) | ||
assert.end() | ||
}) | ||
test("can create/manipulate textnodes", function (assert) { | ||
@@ -146,0 +178,0 @@ var textnode = document.createTextNode("hello") |
31794
670