解决getElementsByClassName在IE8之前无法使用的问题
2016-11-18 10:45
519 查看
昨天在看视频的时候,发现有个老师说了getElementsByClassName这个功能在IE10之前的浏览器中是无法使用的,之前我一直不知道,原来这种属性都是有兼容性问题的。于是,带着疑惑,我尝试了一下,因为我的电脑不知道为什么IETester 装好以后用不了,所以我是在IE浏览器的仿真测试中运行。我的IE版本是11.结果发现是IE8及其之前的浏览器不能运行:我的测试测试代码如下:
----------------------------------------------------------------------------
<body>
<p class="p1">我是p1</p>
<p class="p1">我是p2</p>
<p class="p1">我是p3</p>
<script>
var x=document.getElementsByClassName("p1");
alert(x[1].innerHTML);
</script>
----------------------------------------------------------------------------
后来在听了视频中老师的方法以后,知道了解决这个问题的方法,那就是我们自己封装一个兼容各个浏览器的函数,整理后代码如下:
----------------------------------------------------------------------------
<body>
<p class="p1">我是p1</p>
<p class="p1">我是p2</p>
<p class="p1">我是p3</p>
<script>
function getClassName(clsName,parent){
var oParent=document.getElementById(parent)||document;
var elements=oParent.getElementsByTagName("*");
var ele=[];
for(var i=0;i<elements.length;i++){
if(elements[i].className==clsName){
ele.push(elements[i]);
}
}
return ele;
}
alert(getClassName("p1")[1].innerHTML);
</script>
</body>
----------------------------------------------------------------------------
经过IE11浏览器的仿真测试,发现连IE5这种老古董都会弹出“我是p2”的框框.
----------------------------------------------------------------------------
<body>
<p class="p1">我是p1</p>
<p class="p1">我是p2</p>
<p class="p1">我是p3</p>
<script>
var x=document.getElementsByClassName("p1");
alert(x[1].innerHTML);
</script>
----------------------------------------------------------------------------
后来在听了视频中老师的方法以后,知道了解决这个问题的方法,那就是我们自己封装一个兼容各个浏览器的函数,整理后代码如下:
----------------------------------------------------------------------------
<body>
<p class="p1">我是p1</p>
<p class="p1">我是p2</p>
<p class="p1">我是p3</p>
<script>
function getClassName(clsName,parent){
var oParent=document.getElementById(parent)||document;
var elements=oParent.getElementsByTagName("*");
var ele=[];
for(var i=0;i<elements.length;i++){
if(elements[i].className==clsName){
ele.push(elements[i]);
}
}
return ele;
}
alert(getClassName("p1")[1].innerHTML);
</script>
</body>
----------------------------------------------------------------------------
经过IE11浏览器的仿真测试,发现连IE5这种老古董都会弹出“我是p2”的框框.
相关文章推荐
- ie8及其以下浏览器的document.getElementsByClassName兼容性问题
- 关于IE中getElementsByClassName不能用的问题解决方法
- 根据原生JS封装函数,根据传递的选择器查找对应的元素以及解决getElementsByClassName() 兼容问题
- document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
- 进一步优化—IE8以下浏览器不支持document.getElementsByClassName() 访问节点;怎么解决?---封装自己的类名
- document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
- IE8以下浏览器不支持document.getElementsByClassName() 访问节点;怎么解决?---封装自己的类名
- document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
- 原生js方法document.getElementsByClassName在ie8及其以下的兼容性问题
- 原生JavaScript解决document.getElementsByClassName兼容问题
- ie8兼容问题(一) getElementsByClassName
- 解决ie8及一下不支持document.getElementsByClassName
- document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
- 解决IE8以下不支持getElementsByClassName的方法
- 解决getElementsByClassName兼容性问题
- document.getElementsByClassName在ie8及其以下浏览器的兼容性问题
- 解决IE8一下不支持getElementsByClassName的方法
- getElementsByClassName与classList兼容性问题与解决方案
- IE浏览器不支持getElementsByClassName的解决方法