我正在运行一些带有嵌入式 JavaScript 的非常普通的 HTML 代码。我使用“onClick”来引用前面几行声明的 JavaScript 函数。该脚本很简单,只应该显示一个包含“关于”信息的警报。
<!DOCTYPE=html>
<html>
<head>
<title>MyApp - Main Menu</title>
<link rel="stylesheet" type="text/css" href="MyApp.css">
</head>
<body>
<div id="CONTAINER">
<div id="ONEIT1">
<img src="oneit_black.jpg">
</div>
<div id="ONEIT2">
<img src="oneit_black.jpg">
</div>
<div id="BANNER">
<h1>MyApplication</h1>
<h3>Main Menu</h3>
</div>
<div id="MENUBAR">
<script type="text/javascript">
function ABOUT_ALERT(node)
{{
return alert("Version 1.00");
}}
</script>
<ul>
<li><a href="mailto:somebody@email.com">Contact Admin</a></li>
<li><a href="#" onclick="return ABOUT_ALERT(this);">About MyApp</a></li>
<li>Something</li>
<li><form action="MyApp.py" method="post">
<input type="hidden" name="VAR_STATE" value="LOGOUT">
<input type="submit" value="Logout">
</li>
</ul>
</div>
</div>
</body>
</html>
但是,警报无法打开或显示,当我在 F12 开发人员工具中打开它时,我看到它告诉我我的函数 ABOUT_ALERT 未定义:
引用错误:ABOUT_ALERT 未定义
我在其他基于网络的应用程序中的其他地方使用了完全相同的代码,没有任何问题。有人看到我在这里做错了什么吗?注意:我的 javascript 函数周围的双“{{”和“}}”是因为它是从 Python 运行的,而且我通常会进行大量 {xyz} 格式化/替换,因此必须使用 double 。
最佳答案
function ABOUT_ALERT(node)
{{
return alert("Version 1.00");
}}
应该是:
function ABOUT_ALERT(){
alert("Version 1.00");
}
此外,您的函数被声明为接受一个参数,并且您将一个参数传递给该函数,但该函数没有对该参数执行任何操作。
此外,您不需要任何 return
关键字,因为没有任何值被发送到任何地方。
最后,将 JavaScript 放在网页的 head
部分或 body
结束之前,以提高可读性。
function ABOUT_ALERT() {
alert("Version 1.00");
}
<div id="CONTAINER">
<div id="ONEIT1">
<img src="oneit_black.jpg">
</div>
<div id="ONEIT2">
<img src="oneit_black.jpg">
</div>
<div id="BANNER">
<h1>MyApplication</h1>
<h3>Main Menu</h3>
</div>
<div id="MENUBAR">
<ul>
<li><a href="mailto:somebody@email.com">Contact Admin</a></li>
<li><a href="#" onclick="ABOUT_ALERT();">About MyApp</a></li>
<li>Something</li>
<li><form action="MyApp.py" method="post">
<input type="hidden" name="VAR_STATE" value="LOGOUT">
<input type="submit" value="Logout">
</li>
</ul>
</div>
</div>
关于javascript - 在 Javascript/HTML 中获取 ReferenceError 说“函数未定义”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40771775/