JavaScript onload函数循环

时间:2017-09-24 18:51:38

标签: javascript jquery

目前,我有一个JavaScript函数,在页面加载时提交一个表单,问题是,这个函数永远不会停止,它会永远进入循环,我试图在条件满足时停止它但是对于某些它不起作用的原因。

条件是i==1,但它一直持续。

<script type="text/javascript">
var i = 0;
function loadit(){
if (i==1){
    return;
    }else{
        document.frm.submit();
        i++
    }
}
</script>

</head>

<body onload="loadit()">

2 个答案:

答案 0 :(得分:1)

循环的原因是你在每个加载时将i重置为0(因此,你的循环),你需要在其他地方存储i,检查表单是否已提交,然后按增量增加。

所以这是一个使用PHP的简单示例。它将在i下的网址参数中查找i=?值。如果未设置,则自动将其设置为0.

<?php
// this will check for the i in the URL, if it's not there, set $i to 0
$i = (isset($_GET['i']) ? urlencode($_GET['i']) : 0)
?>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">

    $(function loadit() {
        // set `i` to `$i`
        var i = <?= $i; ?>;
        var frm = $('#form');
        var con = $('#content');

        if (i == 1) {
            return true;
        } else {
            frm.submit();
            i++;
        }
    });
</script>

</head>

<body onload="loadit()">

<!-- increment $i for the action field. -->
<form id="form" action="?i=<?= ++$i; ?>" method="post">

    <input id="content" type="hidden" value="Something_here">

</form>


</body>

另一种方法是使用Ajax,并使用响应来确定是否需要再次提交。

答案 1 :(得分:-2)

您提交了一个表单,以便刷新您的页面,然后再次点击onload。 如果您希望每次页面加载时都使用ajax提交表单。

您可以通过删除document.frm.submit();并执行console.log来测试它。