zoukankan      html  css  js  c++  java
  • js兼容性

    1.getElementByClassName

    在使用原生JavaScript时,获取类选择符时,即使用getElementByClassName,它在Firefox和IE下是不能兼容。

    Firefox下是可以用它获取的到元素而IE不行,一般框架都会实现该方法,达到在IE和Firefox下兼容的问题。

    function getByClassName(className){  
    			if(document.getElementByClassName){  
    				return document.getElementByClassName(className) //FF下因为有此方法,所以可以直接获取到;  
    			}  
    			var nodes=document.getElementsByTagName("*");//获取页面里所有元素,因为他会匹配全页面元素,所以性能上有缺陷,但是可以约束他的搜索范围;  
    			var arr=[];//用来保存符合的className;  
    			for(var i=0;i<nodes.length;i++){  
    				if(hasClass(nodes[i],className)) arr.push(nodes[i]);  
    			}  
    			return arr;  
    		} 
    function hasClass(node,className){  
    			var cNames=node.className.split(/s+/);//根据空格来分割node里的元素;  
    			for(var i=0;i<cNames.length;i++){  
    				if(cNames[i]==className) return true;  
    			}  
    			return false;  
    		} 

    另从网上看到一种解决的办法:

    由于IE4之后对 document.all 都有支持,所以可以简单的利用是否支持 document.all判断是否为IE。

    如果不是IE,则用W3C DOM的document.getElementByTagName('*')取代all

    function getElementsByClassName (className) {
    			var all = document.all ? document.all : document.getElementsByTagName('*');
    			var elements = new Array();
    			for (var e = 0; e < all.length; e++) {
    				if (all[e].className == className) {
    					elements[elements.length] = all[e];
    					break;
    				}
    			}
    			return elements;
    		} 
    上山不易,只有坚持才能看到好风光。
  • 相关阅读:
    servlet遇到的问题
    servlel出现404问题★ 出现不自动映射 设置XML的问题时候
    c3p0的错误mchange.v2.ser.Indirector
    【转】JSON和JSONP
    性能测试理论
    如何解决包冲突问题
    一方包、二方包、三方包是什么?
    利用selenium webdriver点击alert提示框
    采用Spring管理Bean和依赖注入
    Java加载jar文件并调用jar文件当中有参数和返回值的方法
  • 原文地址:https://www.cnblogs.com/xuyan1/p/6028509.html
Copyright © 2011-2022 走看看