สร้าง function getElementsByClassName ไว้ใช้งานเอง

PHP Result Center PHP Result Center เป็นหมวด ที่ไว้รวบรวม โปรแกรม Code php Javascript CSS CMS

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
imsn
PHP Super Member
PHP Super Member
โพสต์: 375
ลงทะเบียนเมื่อ: 07/05/2010 12:58 pm
ติดต่อ:

สร้าง function getElementsByClassName ไว้ใช้งานเอง

โพสต์โดย imsn » 08/03/2011 11:41 pm

สร้าง function 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);
};
ช่วยตอบเพราะอยากโปรโหมทเว็บ คิคิคลิกเลย
หาเพื่อนฝรั่งคุย M ...

  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ย้อนกลับไปยัง

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: 4 และ บุคคลทั่วไป 0 ท่าน