在此代碼,我不明白爲什麼,如果我插入一個斷點第一如果成功if(data == 1){
條件,我可以看到fromCTA
變量,但不$form
:澄清JavaScript的範圍
jQuery('.pane-tab form, form#hlp_contactCTA').on('click','.input-submit',function(e){
var $form = jQuery(this).parent('form');
var fromCTA = false;
var formArrSerialized = $form.serializeArray();
var len = formArrSerialized.length;
for(var i=0; i<len; i++){
if(formArrSerialized[i].name == 'message'){
var msg = formArrSerialized[i].value;
}
}
if(msg){
if(!$form.is('#msg-form')){ //we are in user account
fromCTA = true;
//formArrSerialized.push({name:'fromCTA', value: 1});
}
formArrSerialized.push({name:'action', value:'send_message'});
var param = jQuery.param(formArrSerialized);
jQuery.ajax({
url:pathToAjax() + 'wp-admin/admin-ajax.php',
data:param,
type:'POST',
success: function(data){
if(data == 1){
if(!fromCTA){
appendMsg(msg);
} else {
showMsg('Il messaggio è stato inviato',2000,function(){jQuery('#popup-contactCTA').hide();});
}
} else {
console.log('qualcosa è andato storto');
};
},
error: function(){
console.log('error');
}
});
}
e.preventDefault();
});
代碼工作正常有沒有錯誤,請分析一下才回答我的問題,這方面的變量範圍:
在匿名函數中的成功,我可以在Chrome調試器中看到的只是一個封閉的可變fromCTA
和msg
,而我期望看到$form
, formArrSerialized
和len
。他們在我看來都具有相同的域