未捕获的RangeError:超出onload的最大调用堆栈大小

时间:2015-07-04 12:47:25

标签: javascript

我在上一页上有一个按钮,该按钮会重定向到此页面,但问题是当页面加载时它没有显示确认框。我收到此错误

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>

4 个答案:

答案 0 :(得分:2)

您的javascript代码中有两个问题:

  1. 您已将您的功能命名为与您尝试呼叫的保留功能相同。
  2. 您的比较实际上是一个分配
  3. 要解决第一个问题,只需将您的函数名称更改为其他内容,例如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)