0

我的脚本

var cwidth   = document.getElementById('contentarea').clientWidth;
var elements = document.getElementsByClassName("shadow");

for(var i=0; i<elements.length; i++) {
   elements[i].style.width = cwidth+"px";
   var anc = elements[i].getElementsByTagName("a"); // not working in IE 7 & 8
   anc[0].style.width = cwidth+"px";
}

此脚本在除 IE 7 和 8 之外的所有浏览器中运行良好

任何人请帮助我

4

2 回答 2

2

getElementsByClassNameIE<9 不支持。

在 IE8 中,您可以使用:

var elements = document.querySelectorAll(".shadow");

但请记住,它不像您使用的那样是实时收藏getElementsByClassName。如果要查找具有多个类的元素,则必须执行document.querySelectorAll(".first.second");.

至于 IE7,你必须依赖其他东西,比如众所周知的框架(比如 jQuery 或只是 Sizzle),或者像这样的函数:

var getElementsByClassName = (function(all) {
    return function (cls) {
        var a = [], i = 0;
        for (; i < all.length; i++)
            if ((" " + all[i].className + " ").indexOf(" " + cls + " ") !== -1)
                a.push(all[i]);
        return a;
    };
})(document.all);

这也不是实时集合,而且您将无法搜索具有多个类的元素。也就是说,除非他们在他们的className财产中按照您想要的方式订购,但您不能依赖它。你将不得不做一些更复杂的事情,当你在 Javascript 方面有更多经验时,我会把它留给你。

于 2012-09-28T07:21:16.873 回答
1

IE7 和 8 没有函数“getElementsByClassName”,你可以像 jQuery 一样自己构建这个函数。

于 2012-09-28T07:20:52.183 回答