1

好吧,我很难弄清楚这一点,问题在于我在我拥有的某些选项卡中使用此代码,它在所有浏览器中都能完美运行,除了 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 的控制台中也没有收到任何错误。

4

3 回答 3

0

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

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

于 2013-10-25T03:47:54.273 回答
0

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

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

无论您使用哪个版本的 IE,这将使您的代码与 IE 8 兼容。您唯一应该注意的是,您的代码应该在 IE 8 中运行良好。

于 2013-10-25T04:38:12.120 回答
0

好吧,我已经弄清楚会发生什么

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

所以在这一行我有'li'和'ol',因为页面没有任何'ol'页面在IE中没有工作所以自从我删除

于 2013-11-27T22:12:33.350 回答