如何在 javascript 中使用字符串调用函数?

Posted

技术标签:

【中文标题】如何在 javascript 中使用字符串调用函数?【英文标题】:How can I call a function using a string in javascript? 【发布时间】:2013-09-17 07:16:43 【问题描述】:

我已经知道有一个类似的问题,但似乎无法使其发挥作用。

请告诉我需要做什么。

示例:(其中字符串“test”是函数名)

 <script>

  function test()
  alert("Hello World");
  
   //is this the right way to call it? 
  window["test"]();


  </script>

//请不要评价

【问题讨论】:

This answer 演示了如何做到这一点。请描述您无法使其工作的原因,包括任何 javascript 控制台错误。 它在小提琴中不起作用。当我问这个问题时,我正在测试小提琴。 【参考方案1】:

请关注关注

var fn = window["test"];
if(typeof fn == 'function') 
    fn();

【讨论】:

@ronell 请查看修改后的答案 嗨,Pawan,当我重新加载页面时,我期待收到警报。这是小提琴:fiddle.jshell.net/uxskW/3 请看小提琴fiddle.jshell.net/uxskW/5你必须写这个是头部分并删除一个额外的=我错了,愚蠢的错字;)【参考方案2】:

评估是您所需要的。示例:

<script>
    eval("alert('hello')");
</script>

【讨论】:

感谢您的评论,但我不想使用 eval。【参考方案3】:

这样试试

<script>

function test()
alert("Hello World");

var func = 'test'
this[func]();
</script>

【讨论】:

感谢您的评论! :)【参考方案4】:

您的示例应该有效。这是一个类似问题的答案 How to execute a JavaScript function when I have its name as a string

【讨论】:

是的,但它不起作用..我在询问之前已经检查了该页面。感谢您的评论。【参考方案5】:

Pawan 的回答是对的,它在 fiddle 中不起作用,因为 fiddle 将代码包装到 $(window).on("load") 事件中。在普通页面中尝试。抱歉,不能评论,低声望

【讨论】:

以上是关于如何在 javascript 中使用字符串调用函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何将字符串转换为 JavaScript 函数调用? [复制]

如何将 PHP 字符串传递给 Javascript 函数调用? [复制]

如何从javascript中的函数返回值[重复]

如何使javascript字符串成为函数调用[重复]

JavaScript,在公共方法中将私有函数作为字符串调用,而不使用 eval(显示模式)

在 Thymeleaf 中使用 onClick 时如何将参数传递给 javascript 函数调用