前端面试笔试题学习--后延/以后学习01

本文介绍了一种自定义的getElementByClassName方法实现方案,该方法可在不支持此功能的浏览器上模拟实现,并且能够根据指定的类名和标签名筛选DOM元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、 实现以下方法(与标准一致)

Element.prototype .getElementsByclassname

element.prototype.getElementsByClassName = function (searchClass, node,tag) {

  if(document.getElementsByClassName){

 var nodes =  (node || document).getElementsByClassName(searchClass),result = [];

for(var i=0 ;node = nodes[i++];){

         if(tag !== "*" && node.tagName === tag.toUpperCase()){

           result.push(node)

         }

       }

       return result

    }else{

      node = node || document;

      tag = tag || "*";

      var classes = searchClass.split(" "),

elements=(tag==="*"&&node.all)?node.all:node.getElementsByTagName(tag),

      patterns = [],

      current,

      match;

      var i = classes.length;

      while(--i >= 0){

        patterns.push(new RegExp("(^|\\s)" + classes[i] + "(\\s|$)"));

      }

      var j = elements.length;

      while(--j >= 0){

        current = elements[j];

        match = false;

        for(var k=0, kl=patterns.length; k<kl; k++){

          match = patterns[k].test(current.className);

          if (!match)  break;

        }

        if (match)  result.push(current);

      }

      return result;

    }

  }

 

Function.Prototype.bind

Function.prototype.bind = function (oThis) {

        if (typeof this !== "function") {

          throw new TypeError("bind function error");

        }

        var aArgs = Array.prototype.slice.call(arguments,1),

            fToBind = this,

            fBound = function () {

              return fToBind.apply(oThis || window,aArgs.concat(Array.prototype.slice.call(arguments)));

};

        return fBound;

      };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值