7

このスクリプトはFirefoxまたはChromeで機能しますが、当社のWebサイトのトップブラウザーであるIE9では半分しか機能しません。

取得する問題は、このエラーをスローすることです。

SCRIPT438:オブジェクトはプロパティまたはメソッドをサポートしていません'append' calc_ajax.js、26行目文字21

この行:item.append(link);

そして私はなぜ立ち往生しています。どんな助けでもいただければ幸いです。

$(document).ready(function(){
$('.first a.btn').click(function(){
    $('.first a.active').removeClass('active');
    $(this).addClass('active');
    $('.second .title').addClass('active');

    var id = $(this).data('cat-id');

    var wrap = $('<div>');

    $.ajax({
        url:    script_url,
        type:   "post",
        data: {"cat": id},
        dataType: "json"
    }).success(function(result){
        if(result.status == "ok"){
            $.each(result.data, function(i, elem){
                item = $("<div class='body-area'>").append($("<img src='" + elem.image + "'>"));
                link = $("<a href='#results' class='btn'>");
                link.text(elem.name);
                link.data('subcat-id', elem.id);
                item.append(link);

                wrap.append(item);

            });
            $('.second .body').html(wrap).slideDown('fast');
        }
    });
});

$('.second a.btn').live('click', function(){
    $('.second .body-area.active').removeClass('active');
    $(this).parent().addClass('active');

    var sub_id = $(this).data('subcat-id');        

    $.ajax({
        url:    script_url,
        type:   "post",
        data: {"subcat": sub_id},
        dataType: "json"
    }).success(function(result){
        if(result.status == "ok"){
            $('.third .title').text(result.data.title);
            $('.third .body').html(result.data.body);
            $('.third').slideDown('fast'); 
        }
    });        
});

});

4

3 に答える 3

12

ネイティブ関数を使用すると、IE11でも同じエラーが発生しましたdocument.body.append

MDN (npm )のポリフィルを使用document.body.appendChildまたは挿入できます。

于 2018-12-13T13:03:34.167 に答える
11

window.itemはInternetExplorerの特別なメソッドであり、貼り付けたコードはローカル変数を宣言していなかったためitem、IEでネイティブメソッドを再割り当てしようとしていました。IEは再割り当ての発生を許可しなかったため、item変数で期待していたjQueryオブジェクトを実際に取得できなかったため、appendメソッドを使用できません。

コードを修正する最も簡単な方法は、変数varを使用する直前に権利を追加することです。itemIEの問題をどのように修正するかを示すjsFiddleをまとめましたhttp://jsfiddle.net/httyY/

$.ajax({
    url:    script_url,
    type:   "post",
    data: {"cat": id},
    dataType: "json"
}).success(function(result){
    if(result.status == "ok"){
        $.each(result.data, function(i, elem){
            var item = $("<div class='body-area'>").append($("<img src='" + elem.image + "'>"));
            var link = $("<a href='#results' class='btn'>");
            link.text(elem.name);
            link.data('subcat-id', elem.id);
            item.append(link);

            wrap.append(item);

        });
        $('.second .body').html(wrap).slideDown('fast');
    }
});
于 2013-03-14T14:45:23.387 に答える
1

試す:

$.each(result.data, function(i, elem){
   var item = $("<div class='body-area'>").append($("<img src='" + elem.image + "'>"));
   var link = $("<a />", {"href" :"#results", "class": "btn"});
   link.text(elem.name);
   link.data('subcat-id', elem.id);
   item.append(link);
   wrap.append(item);    
});
于 2013-03-14T10:00:53.637 に答える