【问题标题】:how to call function using var name?如何使用 var name 调用函数?
【发布时间】:2013-08-11 18:24:30
【问题描述】:

我有一个 div 需要根据单击的下拉 div 移动到特定位置。我为每个人做了一个功能。函数名称对应于下拉 div id +“箭头”。然后,我创建了一个 var,它获取了单击的下拉 div 的 id 名称并添加了单词箭头,这样它就可以匹配函数名称。当我尝试使用 var 调用该函数时,它不起作用。

 var arrowName = $(this).attr('id') + "Arrow()";

    function btn1s1Arrow() {$( "#greenArrow" ).animate({top: "203px", left: "291px"}, "normal" );}
    function btn1s2Arrow() {$( "#greenArrow" ).animate({top: "345px", left: "381px"}, "normal" );}
    function btn1s3Arrow() {$( "#greenArrow" ).animate({top: "444px", left: "391px"}, "normal" );}

   //////dont mind this $("#qwrapper .accordionContent2").slideUp('normal'); 
   ////////dont mind this $(this).next().slideDown('normal');

    arrowName();

我们将不胜感激。提前谢谢...我很困

这里是代码的一部分,所以我说的其实是有道理的 http://jsfiddle.net/vrs9j/1/

【问题讨论】:

标签: javascript function variables var


【解决方案1】:

没必要,你可以这样做:

var arrowName = $(this).attr('id');

var animProps = {
    btn1s1: [203, 291],
    btn1s2: [345, 381],
    btn1s3: [444, 391]
};

var animProp = animProps[arrowName];
$("#greenArrow").animate({top: animProp[0], left: animProp[1]}, "normal");

【讨论】:

  • 哇。用更少的代码做了我想做的事。谢谢你,你太棒了。
【解决方案2】:

你可以这样做:

window[arrowName]();

【讨论】:

  • 它在一个函数内部,所以箭头函数的作用域不是窗口,所以这不起作用,因为函数绑定到一个 jquery 点击事件,'this' 指的是一个 DOM 元素而不是函数范围,因此 this[arrowName]() 也不起作用。您可以将函数添加到对象并在对象上使用相同的调用语法:var arrows = {//functions};箭头[箭头名称]();话虽如此,我会选择 Esailija 的解决方案 - Hummlas
  • 是的,很公平。没有看到该函数在另一个函数中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-24
  • 2013-04-09
  • 2018-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多