我怎样才能制作动态功能?
How can I make dynamic functions?
我有 10 个这样的函数:
function instagram_ajax(){
return ajaxRequest('search/instagramid', 'instagramid').then(
function(res) {
var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
$('.option_name_instagramid + td').html("<img src='img/" + imgStatus + "' />")
optionsRes['instagramid'] = res[1];
}, function(err){
$('.option_name_instagramid + td').html("<img src='img/warning.png' />")
}
);
}
function googleplus_ajax(){
return ajaxRequest('search/googleplusid', 'googleplusid').then(
function(res) {
var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
$('.option_name_googleplusid + td').html("<img src='img/" + imgStatus + "' />")
optionsRes['googleplusid'] = res[1];
}, function(err){
$('.option_name_googleplusid + td').html("<img src='img/warning.png' />")
}
);
}
.
.
.
如你所见,这些功能几乎是等价的,只是字数instagram
、googleplus
不同。我还有一个包含所有这些名称的数组:
var parts = ['instagram', 'googleplus', 'linkedin', 'facebook', ...];
现在我想知道,是否可以动态创建这些数组?我的意思是将一个基于变量的函数放入循环中并使用该数组来生成所有这些函数?这样的事情可能吗?
制作包装函数
function ajax(str) {
return function() {
return ajaxRequest('search/'+str+'id', ''+str+'id').then(
function(res) {
var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
$('.option_name_'+str+'id + td').html("<img src='img/" + imgStatus + "' />")
optionsRes[str+'id'] = res[1];
}, function(err){
$('.option_name_'+str+'id + td').html("<img src='img/warning.png' />")
}
);
}
}
var instagram_ajax = ajax('instagram');
var googleplus_ajax = ajax('googleplus');
或针对您的情况
var parts = ['instagram', 'googleplus', 'linkedin', 'facebook'];
var funcs = {};
for (var i = 0; i < parts.length; i++)
funcs[parts[i]] = ajax(parts[i]);
// now u do
funcs.instagram()
我有 10 个这样的函数:
function instagram_ajax(){
return ajaxRequest('search/instagramid', 'instagramid').then(
function(res) {
var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
$('.option_name_instagramid + td').html("<img src='img/" + imgStatus + "' />")
optionsRes['instagramid'] = res[1];
}, function(err){
$('.option_name_instagramid + td').html("<img src='img/warning.png' />")
}
);
}
function googleplus_ajax(){
return ajaxRequest('search/googleplusid', 'googleplusid').then(
function(res) {
var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
$('.option_name_googleplusid + td').html("<img src='img/" + imgStatus + "' />")
optionsRes['googleplusid'] = res[1];
}, function(err){
$('.option_name_googleplusid + td').html("<img src='img/warning.png' />")
}
);
}
.
.
.
如你所见,这些功能几乎是等价的,只是字数instagram
、googleplus
不同。我还有一个包含所有这些名称的数组:
var parts = ['instagram', 'googleplus', 'linkedin', 'facebook', ...];
现在我想知道,是否可以动态创建这些数组?我的意思是将一个基于变量的函数放入循环中并使用该数组来生成所有这些函数?这样的事情可能吗?
制作包装函数
function ajax(str) {
return function() {
return ajaxRequest('search/'+str+'id', ''+str+'id').then(
function(res) {
var imgStatus = res[1].length > 0 ? "checked_successfully.png" : "checked_noRes.png";
$('.option_name_'+str+'id + td').html("<img src='img/" + imgStatus + "' />")
optionsRes[str+'id'] = res[1];
}, function(err){
$('.option_name_'+str+'id + td').html("<img src='img/warning.png' />")
}
);
}
}
var instagram_ajax = ajax('instagram');
var googleplus_ajax = ajax('googleplus');
或针对您的情况
var parts = ['instagram', 'googleplus', 'linkedin', 'facebook'];
var funcs = {};
for (var i = 0; i < parts.length; i++)
funcs[parts[i]] = ajax(parts[i]);
// now u do
funcs.instagram()