Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript将函数名作为参数传递,不使用jquery show hide_Javascript_Jquery - Fatal编程技术网

javascript将函数名作为参数传递,不使用jquery show hide

javascript将函数名作为参数传递,不使用jquery show hide,javascript,jquery,Javascript,Jquery,这是一个非常简单的例子 我试图将函数名“show”或“hide”作为参数传递 但是它不起作用,你能帮忙吗 if(a==true){ showOrhide (hide); }else{ showOrhide (show); } var showOrhide = function(doThis){ $("#myDiv").doThis(); }; 它的工作原理如下: var showOrhide = function(doThis) { $("#myDiv")[doThis]();

这是一个非常简单的例子

我试图将函数名“show”或“hide”作为参数传递

但是它不起作用,你能帮忙吗

if(a==true){
showOrhide (hide);
}else{
showOrhide (show);
}

var showOrhide = function(doThis){
  $("#myDiv").doThis();
};

它的工作原理如下:

var showOrhide = function(doThis) {
    $("#myDiv")[doThis]();
};

if(a) {
    showOrhide('hide');
} else {
    showOrhide('show');
}
Hoever,它仍然非常丑陋。jQuery有一个
toggle()
方法,它接受一个更合适的布尔参数:

$("#myDiv").toggle(!a);

如果您只想传递
show
hide
函数,您可以只传递它们的名称,并以这种方式调用它们:

if(a==true){
  showOrhide ('hide');
}else{
  showOrhide ('show');
}

function showOrhide (doThis){
  $("#myDiv")[doThis]();
};
免责声明:Eval是邪恶的(引用评论)。请自担风险使用。以下答案仅供参考。:-)

另一种方法是使用eval

var showOrhide = function(doThis){
  eval("$('#myDiv')." + doThis + "()");
};    

if(false==true){
  showOrhide ('hide');
}else{
  showOrhide ('show');
}

@Neal的可能重复项为什么你这么认为?这应该是可行的,因为提升:@codename-Highting确保变量已声明,但它不会提升定义(在原始答案中有
var showOrhide=…
),感谢解决方案-它与切换无关,但与概念有关。非常感谢您的帮助我知道最好的方法是使用
toggle()
然后使用
$(“#myDiv”)[doThis]()。这就是为什么我用Or开始回答。我刚刚发布了另一种方法来达到要求。和@Juhana:Thank:-)“谢谢,我从来都没有新过这个-酷,我学到了一些东西”-这就是为什么,@Jithin,最好不要在没有大量使用免责声明的情况下谈论eval,因为实际的用例太远了,在这两者之间,OP很有可能在其他地方使用它来攻击自己的脚。