我编写了一个脚本,该脚本应刷新页面用户输入值的次数。 这是代码
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; )
它不起作用。 请帮忙
答案 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 )
这总是假的,这就是为什么它不适合你。
还有另外两个问题:
您的jQuery查找将返回一个字符串,您应该将其转换为数字,然后再将其与另一个数字进行比较。
您的条件中不需要分号。
最后,这可能是你想写的:
if (reloadCnt <= Number(document.getElementById('a').value)) { ... }