0

サファリ以外のすべてで機能する印刷機能があります。印刷ボタンをクリックすると、エラーがスローされます。

TypeError: 'undefined' is not a function (evaluating 'Array.filter( document.getElementsByClassName('printArea_1'), function(elem){
        $(".printing_list").printElement( elem );
    })')

私のサファリコードを壊しているのはArray.filterです.魔女はサファリ以外のすべてで動作します:

Array.filter( document.getElementsByClassName('printArea_1'), function(elem){
    $(".printing_list").printElement( elem );
});

これをサファリで動作させるはずのコードのチャンクを追加しようとしましたが、そうではありません。これを機能させるのを手伝ってくれる人、またはすべてのブラウザで動作するものに置き換えることができるものを書くのを手伝ってくれる人はいますか?

ここに私の完全な印刷機能があります

function print_list(item_names,number_of_items) {
    var theText="<ol>";
    for(var i=1; i<=number_of_items;i++){
        if($("#" + item_names + "_" + i).val()!=''){
        theText+="<li>"
        theText+=$("#" + item_names + "_" + i).val();   
        theText+="</li>";

        }

    }
    theText +="</ol>";
    $("#print_content_area").html(theText);
        Array.prototype.filter.call( document.getElementsByClassName('printArea_1'), function(elem){
            $(".printing_list").printElement( elem );
        });
}
4

1 に答える 1

2

それが他のブラウザでどのように機能するかはわかりません。Array.filter存在しません; あなたのポリフィルArray.prototype.filterは、正しい関数である を作成します。を使用.callして、配列のようなオブジェクトに適応させることができます。

Array.prototype.filter.call( document.getElementsByClassName('printArea_1'), function(elem){
    $(".printing_list").printElement( elem );
});

しかしfilter、それを行うための適切な機能ではありません。forEachは。

そして…jQueryはありますか?

$('.printArea_1').each(function() {
    $('.printing_list').printElement(this);
});

もキャッシュする必要があるようです$('.printing_list')


それで、あなたはこれをしたいですか?

$('.printing_list').append($('.printArea_1')).printElement();
于 2013-07-31T21:28:34.523 に答える