我要做的是让我在整个网站上的搜索输入在我已经构建的结果页面上显示搜索结果。这段代码有效,但它通过不断点击搜索创建了无限循环。我有什么办法可以将它设置为只点击一次吗?或者点击一下后结束功能?
提前致谢。
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> </td></tr><tr></tr></form></table>');
答案 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页面再次加载相同的查询参数等等。
如果出现以下情况,您可能会破坏此循环: