PDA

View Full Version : سوال: آیا جاوااسکریپت action array داره؟



Mori Bone
پنج شنبه 30 مرداد 1393, 21:25 عصر
سلام به همه دوستان.
یه سری اطلاعات دارم که توی آرایه ذخیره می کنم به شکل زیر:
var messageData = {
"emptyusername" : [ 'لطفا نام کاربری را وارد کنید.' , '#usernameInput' , alert('asd') ] ,
"emptypassword" : [ 'لطفا رمزعبور را وارد کنید.' , '#passwordInput'] ,
"wrongusername" : [ 'این نام کاربری وجود ندارد.' , '#usernameInput' ]
};
می خوام وقتی کده زیر فراخوانی شد اون alert نشون داره بشه. آیا امکان داره؟
messageData["emptyusername"][2];

2undercover
پنج شنبه 30 مرداد 1393, 21:37 عصر
خیر همچین قابلیت نداره. می تونید از توابع بی نام استفاده کنید:


var arr = [..., function() {alert('Message');}];

arr[index][anonymFunctionIndex]();

Mori Bone
پنج شنبه 30 مرداد 1393, 21:39 عصر
خیر همچین قابلیت نداره. می تونید از توابع بی نام استفاده کنید:


var arr = [..., function() {alert('Message');}];

arr[index][anonymFunctionIndex]();


میشه اینچیزی که گفتین رو تو کد من جایگزین کنید. دست گلتون درد نکنه

حدودا میشه یه همچین چیزی:
Javascript Array of Functions (http://stackoverflow.com/questions/4908378/javascript-array-of-functions)

Mori Bone
پنج شنبه 30 مرداد 1393, 22:04 عصر
خودم ردیفش کردم. به صورت زیر شد:
این آرایم:
var messageData = {
"emptyusername" : ['لطفا نام کاربری را وارد کنید.', '#usernameInput' ] ,
"emptypassword" : ['لطفا رمزعبور را وارد کنید.', '#passwordInput'] ,
"wrongusername" : ['این نام کاربری وجود ندارد.', '#usernameInput' , undefined , { "actions" : [ function(){ resetForm() } ] } ]
};

فراخوانی:
messageData[data][3]["actions"][0].call();

پیمایشی:
for(var action in messageData[data][3]['actions']) {
messageData[data][3]['actions'][action].call();
}


این فانکشنم:
function resetForm() {
document.getElementById('dataForm').reset();
}

این تاپیک رو هم به عنوان آموزش در نظر بگیرید