Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用click()方法会创建一个无休止的循环_Javascript - Fatal编程技术网

Javascript 使用click()方法会创建一个无休止的循环

Javascript 使用click()方法会创建一个无休止的循环,javascript,Javascript,我想做的是让我在整个网站上的搜索输入在我已经构建的结果页面上显示搜索结果。这段代码可以工作,但它通过不断单击搜索创建了一个无止境的循环。有没有办法可以设置为只点击一次?还是在单击一次后结束函数 提前谢谢 function getParameter(paramName) { var searchString = window.location.search.substring(1), i, val, params = searchString.split("&");

我想做的是让我在整个网站上的搜索输入在我已经构建的结果页面上显示搜索结果。这段代码可以工作,但它通过不断单击搜索创建了一个无止境的循环。有没有办法可以设置为只点击一次?还是在单击一次后结束函数

提前谢谢

function getParameter(paramName) {
    var searchString = window.location.search.substring(1),
        i, val, params = searchString.split("&");
    for (i = 0; i < params.length; i++) {
        val = params[i].split("=");
        if (val[0] == paramName) {
            return val[1];
        }
    }
    return null;
}

var firstRun = true;
var search = getParameter("TextBox1");
if (search != "") {
    var clickSubmit = setTimeout(function() {
        if (firstRun) {
            document.getElementsByName("TextBox1")[1].value=search;
            document.getElementsByName("btnSearch")[1].click();
            clearTimeout("firstRun");
        }
    }, 500); 
};
document.writeln('<table style="background-color: #002e58; float: right; margin-right: 140px;"><tr><td><form name="Form1" method="get" action="../zsearch.aspx" id="Form1"><tr><td style="width: 12%; font-size: small;"></td><td><input name="TextBox1" type="text" id="TextBox1" style="width: 233px; padding=" /><input type="submit" name="btnSearch" value="Search" id="btnSearch" style="font-family: Arial; font-size: 12;"/></td><td>&nbsp;</td></tr><tr></tr></form></table>');
函数getParameter(paramName){
var searchString=window.location.search.substring(1),
i、 val,params=searchString.split(&);
对于(i=0;i
我相信您希望
firstRun
是您的超时ID,但在上面发布的示例中,它实际上是
单击submit

试试这个

var timeoutId = setTimeout(function() {
  if (timeoutId) {
    document.getElementsByName("TextBox1")[1].value=search;
    document.getElementsByName("btnSearch")[1].click();
  }
},500); 

由于输入数据是永久性的,所以会出现无休止的循环。每个html页面加载
firstRun
设置为
true
,然后通过触发单击事件脚本提交表单,然后使用相同的查询参数再次加载html页面,依此类推

如果出现以下情况,您可能会中断此循环:

  • 加载页面后,设置特殊字段,表示“不首先运行”,然后检查是否存在此字段
  • 在提交之前,将搜索字段保存在cookie上,并在重新加载页面上比较cookie值和字段值(如果相等,则为“非首次运行”)

  • 谢谢你的帮助,这个选项仍然会导致无休止的点击搜索按钮的循环。哈哈,很棒的Igor。那没有意义@zachariah666你可以发布一个Plunkr,这样我们就可以看到这里缺少的上下文吗?这是一个合同,我不能发布Plunkr或任何类似的网站。它实际上只是一个用click()事件调用的标准表单。但我无法让它停止点击。嗯。。。你应该能够发布你的问题的匿名版本。。。否则我们只是猜测。如果你发布更多的东西,很高兴看一看。