gpt4 book ai didi

javascript - 未捕获的 ReferenceError 函数未定义

转载 作者:行者123 更新时间:2023-11-28 13:41:43 25 4
gpt4 key购买 nike

我有一个名为 myVar 的变量。当您单击该复选框时,其值会发生变化。单击该复选框时,您将看到一个警报框,其值为 1。当您取消选择它时,它将再次显示一个值为 0 的警报框。这是正确的。

现在我有 2 个问题。

  1. 当我尝试通过单击“提交”来提交文档时,我收到一条错误:Uncaught ReferenceError:confirm_submit 未定义。为什么?

  2. 当我将 confirm_submit 函数置于 ready 事件 之外时,我没有收到错误,但在这种情况下,内部的第二个警报框inform_submit 函数显示 myVarundefined。为什么? myVar 是否无法在 confirm_submit 函数中访问?

代码:

<html>
<head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.treeTable.js"></script>
<script type="text/javascript">
var myVar;
jQuery(document).ready(function() {
$("#myTable2").treeTable({
expandable: true,
clickableNodeNames: true,
initialState: "expanded",
});
document.getElementById('myVar').addEventListener('click', myVar, false);

function myVar() {
if (document.getElementById('myVar').checked === true) {
myVar = 1;
} else {
myVar = 0;
}
alert(myVar);
}.................
some functions....................

function confirm_submit() {
alert(myVar);
if (confirm('Press OK to confirm')) {
document.myform.myVar.value = myVar;
document.myform.submit();
reload_parent_and_close_window();
}
}
and some more functions.....................
});
</script>
</head>
<body>
<form name="myform" id="myform" action="$action" method="post" onsubmit="return false;">
<input type="checkbox" name="myVar" id="myVar" value="myVar">Text here
</form>
<a href="javascript:confirm_submit()">Submit</a>
</body>
</html>

最佳答案

您似乎未能掌握一些基本概念,一些 JavaScript 和一些编程基础知识。

function myVar() {
...
alert(myVar);
}

您预计这里会发生什么? myVar 函数和 myVar 在此范围内的变量是同一件事。如果声明一个变量,然后声明一个同名的函数,该函数将替换堆栈中的变量。另外,JavaScript 中没有 block 作用域。函数中声明的所有内容都首先由编译器声明,无论 block 如何。所以...

function a() {
var a = 1;
if (1) {
var b = 4;
alert(b);
}
alert(b);
}

不要假设作用域与 Java 或 C++ 相同。

另外,如果你想让某些东西显式地全局化,那么就让它显式化。尝试将 myVar 函数重命名为诸如“onClick_myVar”之类的合理名称。然后在声明函数之前,将函数放入闭包中并声明状态变量:

(function() { // Closure
var myVar;

function onClick_myVar() {
if ($(this).getattr("checked")) {
myVar = 1;
} else {
myVar = 0;
}
alert(myVar);
}

$('#myVar').click(onClick_myVar);
})();

关于javascript - 未捕获的 ReferenceError 函数未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17445771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com