使用javascript的标签在IE中无效

时间:2013-10-24 21:31:58

标签: javascript jquery internet-explorer

好吧,我很难搞清楚这个,这笔交易是我在一些标签中使用这个代码,它在所有浏览器中都很完美,除了Internet Explorer 10,9,标签显示但是当你点击它们时,信息不会改变。因此,在查看错误之后,我发现在IE中,如果它没有运行,那么就是代码:

<script type="text/javascript">

Varien.Tabs = Class.create();
Varien.Tabs.prototype = {
    initialize: function(selector) {
        var self = this;
        $$(selector+' a').each(this.initTab.bind(this));
    },

    initTab: function(el) {
        el.href = 'javascript:void(0)';
        if ($(el.parentNode).hasClassName('active')) {
            this.showContent(el);
        }
        el.observe('click', this.showContent.bind(this, el));
    },
    showContent: function(a) {
        var li = $(a.parentNode), ul = $(li.parentNode);
        ul.select('li', 'ol').each(function(el){
            var contents = $(el.id+'_contents');
            //the problem lies here, in IE the if doesn't run
            if (el == li) {
                el.addClassName('active');
                contents.show();
            } else {
               el.removeClassName('active');
               contents.hide();
            }
        });
    }
}
new Varien.Tabs('.product-tabs');    
</script>

所以交易就是IF语句的条件没有运行,我不知道为什么。

我正在使用IE 10和9,因为IE 8工作正常,我也没有在IE的控制台中出现任何错误。

3 个答案:

答案 0 :(得分:0)

打开F12工具并使用调试器。在线上设置断点。看看li和el是什么,看看它们是否真的相等。我可能会尝试比较您想要匹配的li所特有的id或其他值。你必须记住你正在比较你现在正在做的两个jQuery实例。要实际比较节点(元素),你可以这样做:li [0] === el [0];

尝试调试器并使用监视窗口查看实际值是什么,并尝试比较实际节点,而不是jQuery实例。

答案 1 :(得分:0)

如果您的代码在IE8上运行正常,请尝试以下代码:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"> 

无论您使用哪个版本的IE,这都将使您的代码IE 8兼容。 你唯一应该注意的是,你的代码在IE 8中应该可以正常工作。

答案 2 :(得分:0)

我已经弄明白发生了什么

ul.select('li', 'ol').each(function(el){

所以在这行中我有'li'和'ol',因为该页面没有任何'ol',IE中的页面无法正常工作,因此我删除了