2

requestXML私はxmlファイルを取得するために非同期呼び出しを行う関数を持っています

私はまた、うまく動作するこの実装を持っています

function show(url){
    requestXML(url, function(xml){
        var items = $(xml).find('item');
        var list = new Array();
        $.each(items, function(){
            list.push($(this).text());
        });
        displayList(list);
    });
}

ただし、これを行うことで関数をより一般的に表示したい

function show(url, func1){
    requestXML(url, function(xml){
        var items = $(xml).find('item');
        var list = new Array();
        $.each(items, func1(list));
        displayList(list);
    });
}

var func1 = function(list){
    list.push($(this).text());
}

これを行うと、次のエラーが表示されます:「Uncaught TypeError: 未定義のメソッド 'call' を呼び出せません」。inのオブジェクトthisを別のものに変更する必要があることは知っていますが、何を変更するかはわかりません。どうすればこれを機能させることができますか?list.push($(this).text());func

4

3 に答える 3

2

次のようなものが必要です

function show(url, func1){
    requestXML(url, function(xml){
        var items = $(xml).find('item');
        var list = new Array();
        $.each(items, function(idx, value){
            func1.call(this, list, idx, value)
        });
        displayList(list);
    });
}

var func1 = function(list, idx, value){
    list.push($(this).text());
}
于 2013-08-30T13:19:37.210 に答える
0

これを試して...

function show(url, func1){
    var list = [];
    var func1 = function(ele){
          list.push($(ele).text());
    }

    requestXML(url, function(xml){
        var items = $(xml).find('item');
        $.each(items, func1(ele));
        displayList(list);
        });
}
于 2013-08-30T13:35:39.093 に答える