我正在使用jquery ajax函数读取一个带有jquery ajax函数的rss文件,我创建了数组函数mycarousel_itemList
并使用push填充项目。我想在我创建的函数中使用此数组,但是我得到错误:
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}
});
});
答案 0 :(得分:0)
我假设您只是加载了rss feed,然后创建了一个带有结果的轮播。如果是这样,这很容易解决。
寻找这一行:
var mycarousel_itemList = [];
这是在ajax成功回调中创建局部变量。您要做的是将其设置为全局并将其移至顶部(将其设置为&lt; script&gt;标记内的第一行)。
将$ .ajax调用移至文档就绪回调中。
找到以下jcarousel代码:
jQuery('#mycarousel').jcarousel({
size: mycarousel_itemList.length,
itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback}
});
将其移至$ .ajax回调内部,作为回调中的最后一件事。
您的最终代码应如下所示:http://jsfiddle.net/h35VQ/