2

jquery ajax関数を使用してrssファイルを読み込んでいます.配列関数mycarousel_itemListを作成し、プッシュを使用してアイテムを入力します. そのときに作成した関数でこの配列を使用したいのですが、エラーが発生します。

mycarousel_itemList定義されていません

何がうまくいかないのですか?

<script type="text/javascript">
var rss = 'http://search.issuu.com/userxxx/docs/recent.rss';
$.ajax({
type: 'GET',
url: 'js/issuuGallery/proxy.php?url='+rss,
dataType: 'xml',
success: function(xml) {
    var ul = document.createElement("ul");
    ul.setAttribute('id', 'issuu-gallery');
    ul.setAttribute('class', 'overview');

    $(xml).find('item').each(function(){
        var mycarousel_itemList = [];
        var id = $(this).find('[name="documentId"]').attr('value');
        var src = 'http://image.issuu.com/'+id+'/jpg/page_1_thumb_small.jpg';
        mycarousel_itemList.push(src);
        console.log(mycarousel_itemList);
    });
}
});
function mycarousel_itemLoadCallback(carousel, state)
{

for (var i = carousel.first; i <= carousel.last; i++) {
    if (carousel.has(i)) {
        continue;
    }

    if (i > mycarousel_itemList.length) {
        break;
    }

    carousel.add(i, mycarousel_getItemHTML(mycarousel_itemList[i-1]));
}
   };

/**
 * Item html creation helper.
 */
function mycarousel_getItemHTML(item)
{
return '<img src="' + item.url + '" width="75" height="75" alt="' + item.url + '" />';
};

jQuery(document).ready(function() {
jQuery('#mycarousel').jcarousel({
    size: mycarousel_itemList.length,
    itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback}
});
});

4

1 に答える 1

0

RSSフィードを一度ロードして、結果でカルーセルを作成しているだけだと思います。もしそうなら、これは簡単に修正できます。

  1. 次の行を探します。

    var mycarousel_itemList = [];
    

    つまり、ajax 成功コールバック内にローカル変数を作成しています。やりたいことは、それをグローバルにして一番上に移動することです (< script> タグ内の最初の行にします)。

  2. $.ajax 呼び出しをドキュメント準備完了コールバック内に移動します。

  3. 次の jcarousel コードを見つけます。

    jQuery('#mycarousel').jcarousel({
        size: mycarousel_itemList.length,
        itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback}
    });
    

    コールバックの最後のものとして、$.ajax コールバック内に移動します。

最終的なコードは次のようになります: http://jsfiddle.net/h35VQ/

于 2012-09-24T05:37:11.983 に答える