如何从变量运行函数?

时间:2013-12-30 06:20:49

标签: javascript jquery

我正在尝试从我定义的变量中运行一个函数,尽管它不起作用。

这是我的意思的一个例子:

$(document).ready(function(){

    function red () {
       alert("You chose the color red");
    }
    function blue () {
       alert("You chose the color blue");
    }

    $(window).resize(function() {

        var colorvalue = "blue" + "();";
        return colorvalue

    });

});

如果有人可以纠正我错误的逻辑,那将是有帮助的,谢谢。

解决了!这里有完整的解决方案

function red () {
    alert("You chose the color red");
}
function blue () {
    alert("You chose the color blue");
}

$(document).ready(function(){

    $(window).resize(function() {

        var colorvalue = "blue";
        var callable = window[colourvalue];
        callable();

    });

});

7 个答案:

答案 0 :(得分:1)

试试这个:

var red = function{ alert("You chose the color red"); };
var blue = function{ alert("You chose the color blue"); };
$(document).ready(function(){

    $(window).resize(function() {

        var colorvalue = window["blue"];
        return colorvalue();

    });

});

通过这种方式,您可以在不使用eval的情况下评估要调用的目标函数。

答案 1 :(得分:1)

将您的功能置于文档就绪功能之外。如下所示

function red() {
    alert("You chose the color red");
}
function blue() {
    alert("You chose the color blue");
}

$(document).ready(function () {


    $(window).resize(function () {

        var colorvalue = "blue" + "();";
        return eval(colorvalue);

    });

});

如果你想在文件准备中使用,那么就像onclick一样使用特定的id:exp:$(“#target”)。click(); REF

答案 2 :(得分:1)

你应该试试

return eval(colorvalue);

答案 3 :(得分:1)

以下代码绝对可以使用

 $(window).resize(function() {
    var callable = window["blue"];
callable();
});

试试吧

答案 4 :(得分:1)

使用函数作为方法设置对象。 (这避免了多个全局变量。)

var colour = {
    red: function{ ... },
    blue: function{ ... }
}

然后调用colour[myOption],其中myOption以某种方式设置为“蓝色”或“红色”(可能由用户提供)。

答案 5 :(得分:0)

你可以尝试:

var red = function(){
     // doSomething
}

var blue = function(){
    //doSomething
}

答案 6 :(得分:0)

只是做:

var colorvalue = blue;
return colorvalue();

虽然注意alert()函数没有返回任何内容,并且你的函数甚至没有返回任何内容,所以现在你的函数将返回undefined。也许你的意思是将它们定义为:

function blue () {
  var msg = "You chose the color blue";
  alert(msg);
  return msg;
}