|
|
Line 1: |
Line 1: |
| /*
| |
| Developed by Robert Nyman, http://www.robertnyman.com
| |
| Code/licensing: http://code.google.com/p/getelementsbyclassname/
| |
| */
| |
| var getElementsByClassName = function (className, tag, elm){
| |
| if (document.getElementsByClassName) {
| |
| getElementsByClassName = function (className, tag, elm) {
| |
| elm = elm || document;
| |
| var elements = elm.getElementsByClassName(className),
| |
| nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
| |
| returnElements = [],
| |
| current;
| |
| for(var i=0, il=elements.length; i<il; i+=1){
| |
| current = elements[i];
| |
| if(!nodeName || nodeName.test(current.nodeName)) {
| |
| returnElements.push(current);
| |
| }
| |
| }
| |
| return returnElements;
| |
| };
| |
| }
| |
| else if (document.evaluate) {
| |
| getElementsByClassName = function (className, tag, elm) {
| |
| tag = tag || "*";
| |
| elm = elm || document;
| |
| var classes = className.split(" "),
| |
| classesToCheck = "",
| |
| xhtmlNamespace = "http://www.w3.org/1999/xhtml",
| |
| namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
| |
| returnElements = [],
| |
| elements,
| |
| node;
| |
| for(var j=0, jl=classes.length; j<jl; j+=1){
| |
| classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
| |
| }
| |
| try {
| |
| elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
| |
| }
| |
| catch (e) {
| |
| elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
| |
| }
| |
| while ((node = elements.iterateNext())) {
| |
| returnElements.push(node);
| |
| }
| |
| return returnElements;
| |
| };
| |
| }
| |
| else {
| |
| getElementsByClassName = function (className, tag, elm) {
| |
| tag = tag || "*";
| |
| elm = elm || document;
| |
| var classes = className.split(" "),
| |
| classesToCheck = [],
| |
| elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
| |
| current,
| |
| returnElements = [],
| |
| match;
| |
| for(var k=0, kl=classes.length; k<kl; k+=1){
| |
| classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
| |
| }
| |
| for(var l=0, ll=elements.length; l<ll; l+=1){
| |
| current = elements[l];
| |
| match = false;
| |
| for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
| |
| match = classesToCheck[m].test(current.className);
| |
| if (!match) {
| |
| break;
| |
| }
| |
| }
| |
| if (match) {
| |
| returnElements.push(current);
| |
| }
| |
| }
| |
| return returnElements;
| |
| };
| |
| }
| |
| return getElementsByClassName(className, tag, elm);
| |
| };
| |
|
| |
| var getChildrenByTagName = function(parent, name) { | | var getChildrenByTagName = function(parent, name) { |
| var nodeList = []; | | var nodeList = []; |
Line 88: |
Line 9: |
| /* Move tabs from the tabcontent section to the tab section */ | | /* Move tabs from the tabcontent section to the tab section */ |
| /* This assumes that every tabcontent div is paired with one tab div. */ | | /* This assumes that every tabcontent div is paired with one tab div. */ |
| var destinations = getElementsByClassName("tab"); | | var destinations = document.getElementsByClassName("tab"); |
| var tabcontents = getElementsByClassName("tabcontent"); | | var tabcontents = document.getElementsByClassName("tabcontent"); |
| for( var i = 0; i < tabcontents.length; ++i ) { | | for( var i = 0; i < tabcontents.length; ++i ) { |
| var tabs = getChildrenByTagName(tabcontents[i], "UL"); | | var tabs = getChildrenByTagName(tabcontents[i], "UL"); |