0

I am trying to run a javascript which will return me the list (li) items count inside a div. I have tried with various script, but nothing works fine in IE 7.

HTML -

<ul class="ABC">
    <li>1</li>
    <li>2</li>
</ul>

Javascript - document.querySelectorAll('ul.ABC li').length. This should return 2, but in IE 7 it does not work.

I know that query selector is not supported in IE7, i am looking for simple script which can do this. Does any one knows how i can achieve in IE 7 ?

Thanks!

4

2 回答 2

1

如果您可以为列表分配 ID,则更容易:

<ul id="mylist">

然后你可以这样做:

document.getElementById('mylist').children.length;

如果这不是您的选择,则需要更高级和更复杂的东西:

function searchTagsForClass(tagName,className) {
    var tags = document.getElementsByTagBame(tagName), l = tags.length, i,
        match = new RegExp("\\b"+className+"\\b","i");
    for( i=0; i<l; i++) {
        if( tags[i].className.match(match)) return tags[i];
    }
}
searchTagsForClass("ul","ABC").children.length;
于 2013-08-15T11:28:23.987 回答
0

如您所说,您已经知道,querySelectorAllIE7 不支持。

如果您不能(或不想)通过使用 ID 或其他更简单的方法来选择相关元素来解决它,那么您将需要使用 polyfill。

您可能想尝试这个声称为旧 IE 版本实现的polyfill 脚本querySelectorAll,以及其他功能。

或者,总有无处不在的 jQuery。只需包含 jQuery 并将您的 querySelector 代码替换为$('ul.ABC li'), 即可完成。

jQuery 存在的历史原因是为了简化像这样的跨浏览器的东西。如果您需要支持 IE7,那么使用 jQuery 有很多很好的理由。

于 2013-08-15T11:34:42.897 回答