问答详情
源自:10-1 编程挑战

IE7下对a标签使用getAttribute("href")得到的值与其它浏览器不一样,求教

写了本节的这个Tab代码,源码如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>实践题 - 选项卡</title>
    <style type="text/css">
/* CSS样式制作 */  

.ui-tab {
width: 300px;
margin: 20px auto;
color: #333;
font: 12px/1.8 'Microsoft Yahei';
}
.ui-tab-title {
list-style: none;
margin: 0;
padding: 0;
}
.ui-tab-title li {
display: inline-block; 
*display:inline; *zoom:1;
}
.ui-tab-title a {
width: 60px;
line-height: 30px;
display: block;
color: #333;
text-align: center;
text-decoration: none;
margin-left: 5px;
border: 1px solid #ccc;
border-bottom: none;
}
.ui-tab-title .current {
border-top: 2px solid #936;
border-bottom: 2px solid #fff;
margin-bottom: -2px;
}
.ui-tab-cont {
display: none;
padding: 10px;
border: 1px solid #069;
border-top: 2px solid #936;
line-height:2;
}
</style>
    <script type="text/javascript">         
    // JS实现选项卡切换
    window.onload = function(){
        var tab = document.getElementById("Tab");
        var ul = tab.getElementsByTagName("ul")[0];
        var li = ul.getElementsByTagName("li");
        var div = tab.getElementsByTagName("div");
        for(var i=0; i<li.length; i++){
            li[i].getElementsByTagName("a")[0].onclick = function(){
            // 初始化所有标题a标签和内容div标签
                for (var j=0; j<li.length; j++){
                    ul.getElementsByTagName("a")[j].className = "";
                    div[j].removeAttribute("style");
                }

                // 当前点击的a标签加上current类名
                this.className = "current";

                // 将对应的div内容显示出来
                //alert(this.getAttribute("href").substr(1));
                var a_href = this.getAttribute("href",2).substr(1);
                document.getElementById(a_href).style.display = "block";
                return false;
            }
        }
    }
    
    </script>
 
</head>
<body>
<!-- HTML页面布局 -->
<div id="Tab">
    <ul>
        <li><a href="#tab1">房产</a></li>
        <li><a href="#tab2">家居</a></li>
        <li><a href="#tab3">二手房</a></li>
    </ul>
    <div id="tab1" style="display:block">
        275万购昌平邻铁三居 总价20万买一居<br />
        200万内购五环三居 140万安家东三环<br />
        北京首现零首付楼盘 53万购东5环50平<br />
        京楼盘直降5000 中信府 公园楼王现房
    </div>
    <div id="tab2">
        40平出租屋大改造 美少女的混搭小窝<br />
        经典清新简欧爱家 90平老房焕发新生<br />
        新中式的酷色温情 66平撞色活泼家居<br />
        瓷砖就像选好老婆 卫生间烟道的设计
    </div>
    <div id="tab3">
        通州豪华3居260万 二环稀缺2居250w甩<br />
        西3环通透2居290万 130万2居限量抢购<br />
        黄城根小学学区仅260万 121平70万抛!<br />
        独家别墅280万 苏州桥2居优惠价248万
    </div>
</div>

 <p style="height:900px">&nbsp;</p>
</body>
</html>

在实际测试中发现var a_href = this.getAttribute("href").substr(1);这句代码,在IE6/IE7下获取了a标签的相对路径,而在其它浏览器下获得了a标签的锚点路径,为什么会不同呢?

另外,从网上找到了解决IE6/7下该问题的方法,就是使用var a_href = this.getAttribute("href",2).substr(1);这句,getAttribute()的参数里多了个“2”,为什么这样就可以了?getAttribute()不是只有一个参数的吗?

提问者:WingMeng 2014-12-07 20:27

个回答

  • 偌颜宁
    2014-12-08 11:50:08
    已采纳

    这个是浏览器兼容性问题,某些浏览器下是会出现这个样的结果的,在前端开发中,浏览器兼容性问题是不可能避免的,肯定会出现的,这个就需要改动代码,或者去获取浏览器版本之后写相应的代码,而针对本节来说,右侧有源码下载可以参考,在IE7也是可以用的,请参阅