相关疑难解决方法(0)

当我的名字作为字符串时,如何执行JavaScript函数

我在JavaScript中将函数的名称作为字符串.如何将其转换为函数指针,以便稍后调用?

根据具体情况,我可能还需要将各种参数传递给方法.

一些功能可能采取的形式namespace.namespace.function(args[...]).

javascript

994
推荐指数
16
解决办法
49万
查看次数

ES6模块:导入后未定义的onclick功能

我正在测试ES6模块,并希望让用户使用onclick以下方法访问一些导入的函数:

的test.html:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Module Test</title>
</head>
<body>
    <input type="button" value="click me" onclick="hello();"/>
    <script type="module">import {hello} from "./test.js";</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

test.js:

export function hello() {console.log("hello");}
Run Code Online (Sandbox Code Playgroud)

当我单击按钮时,开发人员控制台会说:ReferenceError:未定义hello.如何从模块导入函数,以便它们可用作onclick函数?

我正在使用Firefox 54.0 dom.moduleScripts.enabled设置为true.

javascript ecmascript-6 es6-modules

22
推荐指数
3
解决办法
7155
查看次数

如何从 html 页面调用 javascript 模块 (type=module) 中声明的函数

我正在努力使用 javascript 模块......

我有一个 html 文件和一个 JS 模块。我在 javascript 文件中定义了一个函数,我想从 HTML 页面调用该函数。这是我的代码

索引.html

<html>
<head>
  <script type="module" src="app.js"></script>
</head>
<body>
  <button onclick="greetFromHtml();">greetFromHtml</button>
  <button onclick="greetFromModule()"> greetFromModule</button>
  <script type="text/javascript">
    function greetFromHtml(){
      alert('Hello');
    }
  </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

应用程序.js

function greet(){
  alert('Hello');
}
Run Code Online (Sandbox Code Playgroud)

greetFromHtml 按钮工作正常。当我单击greetFromModule按钮时,出现以下错误:hello is not defined at HTMLButtonElement.onclick

如果我type="module"从标头中删除,一切正常,但是由于其他原因我需要使用模块,所以这不是一个好的解决方案。

我看过几篇文章说我需要导入/导出或使用窗口,但我不知道该怎么做。请问有人可以提供答案吗?理想情况下,实现它的最简单方法

请参阅下面对我审查过的一些问题的参考:

我的 javascript 模块中的函数未定义

从 HTML 调用 JavaScript 中的函数

如何使用 type=module 脚本中的代码[重复]

ES6 模块:导入后未定义 onclick 函数

编辑 我已尝试以下操作但仍然遇到相同的错误 在此输入图像描述 在此输入图像描述 在此输入图像描述

编辑2 答案中的代码正在运行。我只是尝试在本地运行,但我知道您需要一台服务器,因此如果您看到相同的错误,请将站点上传到服务器或使用本地服务器。

html javascript

20
推荐指数
1
解决办法
3万
查看次数

标签 统计

javascript ×3

ecmascript-6 ×1

es6-modules ×1

html ×1