使用click()方法创建一个无限循环

时间:2015-03-18 18:19:21

标签: javascript

我要做的是让我在整个网站上的搜索输入在我已经构建的结果页面上显示搜索结果。这段代码有效,但它通过不断点击搜索创建了无限循环。我有什么办法可以将它设置为只点击一次吗?或者点击一下后结束功能?

提前致谢。

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>');

2 个答案:

答案 0 :(得分:0)

我相信您希望firstRun成为您的超时ID,但在上面发布的示例中,它实际上是clickSubmit

试试这个?

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

答案 1 :(得分:0)

由于输入数据是永久性的,因此发生无限循环。每个html页面加载firstRun设置为true然后通过触发点击事件脚本提交表单,然后html页面再次加载相同的查询参数等等。

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

  1. 在加载页面后,您设置了特殊字段,这意味着&#34;不首先运行&#34;然后检查该字段的存在;
  2. 在提交之前,您在Cookie和重新加载页面上保存搜索字段比较Cookie值和字段值(如果相等,那么&#34;不首先运行&#34;)。