无法通过html按钮访问js函数

时间:2019-07-19 14:25:00

标签: javascript parcel

我正在使用包裹作为捆扎机。我试图通过按钮单击来调用js函数,但会产生错误。

<button onclick="test()">Click</button>
<script src="./js/index.js"></script>
// index.js file

function test() {
  console.log("test");
}

我收到此错误 (索引):19未捕获的ReferenceError:未定义测试     在HTMLButtonElement.onclick((index):19)

3 个答案:

答案 0 :(得分:0)

如果您的函数位于加载事件处理程序中,它将失败

如果您使用

进行定义

let test = ....仅在定义的范围内是已知的

window.addEventListener("load", function() {
  
  var test1 = function() { // this will not be known to the button's inline handler
    console.log(test.value)
  }

})
<input type="text" name="test" id="test" />
<button class="test" onclick="test1()">Click</button>

如果您重命名下面的函数以进行测试,则该函数将失败,并且未定义,因为它被页面中的ID或名称之一遮盖了

function test1() {
  console.log(test.value)
}
<input type="text" name="test" id="test" />
<button class="test" onclick="test1()">Click</button>

解决方案:

function test() {
  alert("Yes")
}
window.addEventListener("load",function() {
   document.getElementById("but").addEventListener("click",test);
})
<button id="but">Click</button>

答案 1 :(得分:0)

如果不这样做

function test() {
  console.log("test");
}

你做

test = function() {
  console.log("test");
}

test = () => {
  console.log("test");
}

有效。我想将函数声明为全局变量会使它们在内联HTML调用范围内可见

答案 2 :(得分:-1)

Task "Exec" "/root/.nuget/packages/runtime.linux-x64.microsoft.dotnet.ilcompiler/1.0.0-alpha-27919-02/tools/ilc" @"obj/Release/netcoreapp2.2/linux-x64/native/HelloWorld.ilc.rsp" Killed 1:7>/root/.nuget/packages/microsoft.dotnet.ilcompiler/1.0.0-alpha-27919-02/build/Microsoft.NETCore.Native.targets(249,5): error MSB3073: The command ""/root/.nuget/packages/runtime.linux-x64.microsoft.dotnet.ilcompiler/1.0.0-alpha-27919-02/tools/ilc" @"obj/Release/netcoreapp2.2/linux-x64/native/HelloWorld.ilc.rsp"" exited with code 137. [/home/app/HelloWorld.fsproj] Done executing task "Exec" -- FAILED. 1:7>Done building target "IlcCompile" in project "HelloWorld.fsproj" -- FAILED. 1:7>Done Building Project "/home/app/HelloWorld.fsproj" (Publish target(s)) -- FAILED. 添加到您的index.js文件

工作示例here