未捕获的范围错误:加载时超过了最大调用堆栈大小
Uncaught RangeError: Maximum call stack size exceeded onload
我在上一页上有一个按钮,它会重定向到这个页面,但问题是当页面加载时,它不会显示确认框。我收到这个错误
Uncaught RangeError: Maximum call stack size exceeded
页面代码:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
//script
<script type="text/javascript">
function confirm(){
var con = confirm("Are You Sure?");
if(con = true){
window.location = "delete.php";
}
else{
history.go(-1);
}
}
</script>
<body onload="confirm()">
</body>
</html>
您的javascript代码中有两个问题:
- 您已将函数命名为与要调用的保留函数相同的函数
- 你的比较实际上是一种分配
要解决第一个问题,只需将函数的名称更改为其他名称,如confirmDeletion()
<script>function confirmDeletion() { /* do stuff */ }</script>
<body onload="confirmDeletion()">
要解决第二个问题,请更改比较。在javascript中,if语句会自动将输入强制为布尔值,这意味着您实际上不需要将其与true
进行比较。
if (con) {
/* do confirmed true stuff */
} else {
/* do confirmed false stuff */
}
为了将来参考,请确保始终使用三重相等的===
符号进行比较,否则会出现意外行为。
您总是要返回1页,因为您没有正确评估您的状况。
if (con = true) {
window.location = "delete.php";
}
应该是
if (con == true) {
window.location = "delete.php";
}
注意附加的=
,=
是赋值运算符,==
用于比较和评估条件。
尝试将函数从confirm
重命名为其他函数。问题是,通过在confirm
函数中调用confirm
,您将进入一个无限循环。
例如,这将在我将confirm
重命名为myConfirm
:时起作用
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
//script
<script type="text/javascript">
function myConfirm(){
var con = confirm("Are You Sure?");
if(con = true){
window.location = "delete.php";
}
else{
history.go(-1);
}
}
</script>
<body onload="myConfirm()">
</body>
编辑
还要将con = true
更改为con == true
,以检查con
是否为真,而不是为其指定值true
。
更改函数的名称。条件if(con = true)
将truthy值分配给con
您应该比较像if(con)
这样的truthy。你应该这么做,
<script type="text/javascript">
function confirmNavigation(){
var con = confirm("Are You Sure?");
if(con){
window.location = "delete.php";
}
else{
history.go(-1);
}
}
</script>
相关文章:
- Javascript在实现时似乎跳过了一行(如果count==1)
- 我需要迭代一个JSON数组——不知道如何做到——已经搜索过了,但仍然可以'我一点也不知道
- Hammer.js过了一段时间就停止工作了
- grunt contrib jshint-error在定义之前就已经使用过了
- 进行自动实时聊天/虚假聊天,我的javascript跳过了第一个响应
- 正在跳过Ajax调用
- 如果我丢失了调用对象,如何杀死 setInterval()/setTimout()
- 再次调用时跳过了 Ajax
- Mootools 类扩展了调用重写的父方法
- 我试过了,但调用成员单击不适用于输入按钮,它与其他按钮非常不同
- 窗口位置不起作用,我已经尝试过了
- 引导程序下拉不起作用.什么都试过了..(引导2.3.2)
- 为什么将一个值推入我的数组被跳过了
- 七吃九:为什么我的索引8在这个d3选择中被跳过了
- 为什么这个复选框不触发jquery代码onchange?我什么都试过了,但都不起作用
- 尽管通过id进行了调用,但Javascript无法访问jsf outputText(label)元素
- jQuery不工作-'jQuery在定义之前就已经使用过了;
- getElementById有时为null.已经试过了.加载完毕.准备好了
- Javascript跳过函数调用中的参数
- AJAX调用跳过了发送一些参数,或者PHP丢失了一些参数