【发布时间】:2020-08-01 01:53:44
【问题描述】:
我希望这个问题不要重复。
我有两个 HTML 元素,其中一个在更改时必须通过名为 foo() 的异步方法填充另一个的值。
以下代码有效:
<input type="text" id="elem">
<input type="file" onchange="
(async ()=>{
document.getElementById('elem').value = await foo(this);
})()
">
下面一个没有(控制台不抛出异常,#elem没有更新):
<input type="text" id="elem">
<input type="file" onchange="
async ()=>{
document.getElementById('elem').value = await foo(this);
}
">
为什么第一个例子有效而第二个无效?
【问题讨论】:
-
第一个 sn-p 通过 IIFE 执行方法。第二个没有。
-
当您在标签的属性中分配“onchange”时,正如您所做的那样,您必须包含整个脚本,包括“()”才能执行功能。如果您在脚本中分配它,例如“myinput.onchange =”而不是在标签中,那么您只需使用函数名称或函数定义。
标签: javascript