Last active
December 31, 2015 12:39
-
-
Save iolloyd/2d8803418be14e8976dd to your computer and use it in GitHub Desktop.
remove non-elements and re-attach in random order
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>permuteChildren()</title> | |
<script type="text/javascript"> | |
function isElementType(node) { | |
return document.getElementById(node).nodeType == 1; | |
} | |
function getElementTypeChildren(node) { | |
var children = [].slice.call(node.childNodes); | |
var elementChildren = []; | |
for (var i=0; i<children.length; i++) { | |
if (children[i].nodeType == 1) { | |
elementChildren.push(children[i]); | |
} | |
} | |
return elementChildren; | |
} | |
function removeChildren(node) { | |
while (node.firstChild) { | |
node.removeChild(node.firstChild); | |
} | |
return node; | |
} | |
function randomAttachChildren(node, children) { | |
for (var n in children) { | |
node.appendChild(n); | |
} | |
} | |
function randomizeList(lst) { | |
var idx = lst.length | |
var rndx; | |
var tmp; | |
while (0 !== idx) { | |
rndx = Math.floor(Math.random() * idx); | |
idx -= 1; | |
tmp = lst[idx]; | |
lst[idx] = lst[rndx]; | |
lst[rndx] = tmp; | |
} | |
return lst; | |
} | |
// receives the id of the parent | |
function permuteChildren(nodeId) { | |
var node = document.getElementById(nodeId); | |
var children = getElementTypeChildren(node); | |
node = removeChildren(node); | |
var max = children.length; | |
var range = Array.apply(null, Array(max)).map(function (_, i) {return i;}); | |
range = randomizeList(range); | |
for (var i=0; i < max; i++) { | |
node.appendChild(children[range[i]]); | |
} | |
return true; | |
} | |
function init() { | |
permuteChildren('ul'); | |
} | |
window.onload = init; | |
</script> | |
</head> | |
<body> | |
<!-- | |
--> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment