首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript函数在IE<10中无法正常工作

Javascript函数在IE<10中无法正常工作
EN

Stack Overflow用户
提问于 2013-04-25 17:14:41
回答 1查看 887关注 0票数 0

我有这个链接,它简单地隐藏了自身并显示了fb:comments元素

代码语言:javascript
复制
<a onclick="comments(this)"> + Comments (
    <fb:comments-count href="http://some.url.com" fb-xfbml-state="rendered">
        <span class="fb_comments_count">1</span>
    </fb:comments-count>
)
</a>

<div class=\"facebook-comments\"><!-- default style for this is 'display:none'-->
    <fb:comments href=\"http://some.url.com" width="644" num_posts="10">
    </fb:comments>
</div>

这是comments()函数:

代码语言:javascript
复制
function comments(src){
    //hide the 'a' element that called this function
    src.style.display="none"; 

    //show comments element 
    src.parentNode.getElementsByClassName('facebook-comments')[0].style.display="block";
    return false;
}

这在Chrome,火狐,歌剧,Safari和IE10中也运行得很好,但是在IE<10中它有错误,当我点击+ Comments (#)链接时,它消失了,但是评论目录没有出现,所以这个链接变得没有用了。

是IE的问题还是我做错了什么?

在这两种情况下,我如何解决它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-25 18:03:51

旧IE不支持getElementsByClassName。MDN声称支持从IE9开始。

另一种选择是querySelectorquerySelectorAll。自IE8以来受支持:

代码语言:javascript
复制
src.parentNode.querySelector('.facebook-comments').style.display="block";

//OR

src.parentNode.querySelectorAll('.facebook-comments')[0].style.display="block";

如果您还想支持IE7 (或者如果您喜欢它的语法),那么最好的选择是使用框架或库。可用的最流行的框架是jQuery ( Sizzle引擎是它的一部分,也可以单独下载)。使用jQuery:

代码语言:javascript
复制
$(src).parent().find(".facebook-comments:first").show();

如果你想避免使用外部库并且想要支持IE7,那么你的选择是相当有限的,但是getElementsByTagName仍然是可用的(从IE5.5开始)。遗憾的是,classList并非如此:

代码语言:javascript
复制
var elems = src.parentNode.getElementsByTagName("div")
for(var i = 0; i<elems.length; i++){
  elem = elems[i];
  if(elem.className.matches(/(^| )facebook-comments( |$)/){
    elem.style.display = "block";
    break;
  }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16210849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档