如何通过用户输入用javascript刷新页面N次?

时间:2016-12-31 11:39:08

标签: javascript

我编写了一个脚本,该脚本应刷新页面用户输入值的次数。 这是代码

var timeinmilliseconds = 60000;
var reloadCnt = window.sessionStorage.getItem("reloadCounter") ? parseInt(window.sessionStorage.getItem("reloadCounter")) + 1 : 1;

window.sessionStorage.setItem("reloadCounter", reloadCnt);
console.log(reloadCnt);
if (reloadCnt <= var x = document.getElementById('a').value;)
  setTimeout(function() { window.location.reload(true) }, timeinmilliseconds);
<form action="index.php" method="GET">
  <p>Your link: <input type="text" rows="5" style="width:200px; height:50px;"  name="link" /></p>
  <p>number of times: <input type="text" id="a"  name="times" /></p>

  <p><input type="submit"  rows="5" style="width:200px; height:50px;" / ></p>
</form>

我在这段代码中做错了什么?一切正常但它不会刷新页面。 加上如果我将代码设置为

if ( reloadCnt <= 3 )

它有效。如果我将它设置为

    if ( reloadCnt <= var x = document.getElementById('a').value; )

它不起作用。 请帮忙

3 个答案:

答案 0 :(得分:1)

我同意Matt Morgan你试图在条件中分配变量:

if ( reloadCnt <= var x = document.getElementById('a').value; )

可能意味着你需要在继续之前了解你的理解。

但这是一个适合你的演示版。 (没有你的index.php,我认为它填充了文本框&#34; a&#34;,我已经在客户端完成了它并从查询字符串中获取了发布的值。一旦你得到了它工作,你总是可以恢复到document.getElementById('a').value

当用户下次点击页面时,您还希望清除sessionStorage变量,否则当您尝试连续两次测试时,reloadCounter仍将是上次运行结束时的位置。

<form  method="GET">
 <p>Your link: <input type="text" rows="5" style="width:200px; height:50px;"  name="link" /></p>
 <p>number of times: <input type="text" id="a"  name="times" /></p>

 <p><input type="submit"  rows="5" style="width:200px; height:50px;" / ></p>
</form>
<script>   

function getParameterByName(name) {
    var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
}
    var timeinmilliseconds = 600;
    var reloadCnt = window.sessionStorage.getItem( "reloadCounter") ? parseInt(window.sessionStorage.getItem( "reloadCounter")) + 1 : 1;
    var times = getParameterByName('times');
    if (times)
    {
        window.sessionStorage.setItem( "reloadCounter", reloadCnt );
        console.log(reloadCnt + ' / ' + times);
        if ( reloadCnt <  times )
            setTimeout(function(){ window.location.reload(true) }, timeinmilliseconds);
    }
    else
    {
        window.sessionStorage.setItem( "reloadCounter", 0 );
    }
</script>

答案 1 :(得分:0)

你可以尝试使用它吗。

if (reloadCnt <= document.getElementById('a').value;)

答案 2 :(得分:0)

您的JavaScript存在一些基本问题。如果您希望将来能够很好地使用JS,那么理解为什么这是行不通的非常重要。

这句话没有达到您的意图:

if ( reloadCnt <= var x = document.getElementById('a').value; )

你是说“如果reloadCnt小于或等于某种东西”,其中“some thing”是该陈述的结果:

var x = document.getElementById('a').value;

此语句 document.getElementById('a').value分配给变量x。在JavaScript中,此类作业的返回值始终为undefined。这意味着您有效撰写的内容与:

相同
if ( reloadCnt <= undefined )

这总是假的,这就是为什么它不适合你。

还有另外两个问题:

  1. 您的jQuery查找将返回一个字符串,您应该将其转换为数字,然后再将其与另一个数字进行比较。

  2. 您的条件中不需要分号。

  3. 最后,这可能是你想写的:

    if (reloadCnt <= Number(document.getElementById('a').value)) { ... }