1

まあ、私はこれを理解するのに苦労しています。私が持っているいくつかのタブでこのコードを使用しているということです.Internet Explorer 10、9を除くすべてのブラウザで完璧に動作します.タブは表示されていますが、それらをクリックしても、情報は変わりません。エラーの内容を調べたところ、実行されていない場合、IE 1 で次のコードが見つかりました。

<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 を使用しています。

4

3 に答える 3

0

F12 ツールを開き、デバッガーを使用します。ライン上にブレークポイントを設定します。li と el が何であるかを確認し、実際に等しいかどうかを確認します。おそらく、一致させようとしているliに固有のIDまたはその他の値を比較しようとします。jQuery の 2 つのインスタンスを現在行っている方法で比較していることを覚えておく必要があります。ノード (要素) を実際に比較するには、次のようにします。

デバッガーを試し、ウォッチ ウィンドウを使用して実際の値を確認し、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 に答える