我在上一页上有一个按钮,该按钮会重定向到此页面,但问题是当页面加载时它没有显示确认框。我收到此错误
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>
答案 0 :(得分:2)
您的javascript代码中有两个问题:
要解决第一个问题,只需将您的函数名称更改为其他内容,例如clusters$clustering
confirmDeletion()
要解决第二个问题,请更改比较。在javascript中,if语句会自动将输入强制转换为布尔值,这意味着您实际上并不需要将其与<script>function confirmDeletion() { /* do stuff */ }</script>
<body onload="confirmDeletion()">
进行比较。
true
为了将来参考,请务必使用三等号if (con) {
/* do confirmed true stuff */
} else {
/* do confirmed false stuff */
}
进行比较,否则会出现意外行为。
答案 1 :(得分:1)
您总是要返回1页,因为您没有正确评估您的情况。
if (con = true) {
window.location = "delete.php";
}
应该是
if (con == true) {
window.location = "delete.php";
}
请注意,其他=
,=
是一个赋值运算符,==
用于比较和评估条件。
答案 2 :(得分:0)
尝试将您的功能从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
。
答案 3 :(得分:0)
更改功能名称。条件expect(post: '/trip_plans')
正在为if(con = true)
分配真值。您应该比较像con
这样的真值。你应该这样做,
if(con)