我知道这可能是一个愚蠢的问题,我知道JS范围的问题是非常常见的,但是,您是否可以善意地帮助我完成这个任务。Ajax函数内的Javascript变量范围
这里是我的功能:
function checkOpen(storeData) {
if (storeData.menu === 'true') {
var offerImgPath = '/wcsstore/ConsumerDirectStorefrontAssetStore/images/colors/color'+ Brand.styleColour + '/v3/',
offer1,
offer2;
cafeTabContent = '<p>Cafe/Restaurant facilities are available in this store.</p>';
cafeTabContent += '<p class="menu_link"><a href="/store_menus/menu.pdf" target="_blank">Click here to download a menu</a></p>';
if (Brand.storeLocatorSettings.cafeOffersOn === true) {
$.ajax({
url : Arcadia.Brand.storeLocatorSettings.offersPageURL,
success : function(data) {
var offerContainer = $(data).find('#basic_story_content');
offer1 = offerContainer.children(':first-child').attr('src');
offer2 = offerContainer.children(':last-child').attr('src');
}
});
console.log(offer1);
cafeTabContent += '<p>Current offers:</p>';
cafeTabContent += '<p class="offer_graphic"><img src="' + offer1+ '" alt="Offer 1" /></p>';
cafeTabContent += '<p class="offer_graphic"><img src="' + offer2+ '" alt="Offer 2" /></p>';
}
return cafeTabContent;
} else {
return false;
}
};
是我遇到的问题是,尽管offer1 &供应2被阿贾克斯成功函数外部定义的事实,在这个函数中应用的值不被保留外因此console.log(offer1)返回undefined而不是图像路径。我知道这是一个范围问题,它真的让我烦恼。任何帮助将不胜感激。
谢谢你们,我知道这只是我愚蠢的一个例子。看到你们所有人都给了我正确的答案,我会在Ajinkya看到他的第一个信用点。 – 2012-03-21 09:30:13