Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.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 如何将URL的结尾传递给表单中的值“”_Javascript_Url - Fatal编程技术网

Javascript 如何将URL的结尾传递给表单中的值“”

Javascript 如何将URL的结尾传递给表单中的值“”,javascript,url,Javascript,Url,我的硬盘上有一个.htlm文件,是我的书籍列表,顶部有一个表单和一个脚本,允许我搜索文件的内容。我喜欢在浏览时访问此文件。我将Firefox与扩展名Advanced URL Builder一起使用。此扩展名允许我突出显示几个单词,然后使用上下文菜单选择Find with…\Google或我在其中编程的任何其他网站。其中一个是我自己的文件,这将打开搜索框上的光标焦点,但不会显示任何文本 打开页面时的URL如下所示: file:///F:/MyBooks.htm?search_txt=War and

我的硬盘上有一个.htlm文件,是我的书籍列表,顶部有一个表单和一个脚本,允许我搜索文件的内容。我喜欢在浏览时访问此文件。我将Firefox与扩展名Advanced URL Builder一起使用。此扩展名允许我突出显示几个单词,然后使用上下文菜单选择Find with…\Google或我在其中编程的任何其他网站。其中一个是我自己的文件,这将打开搜索框上的光标焦点,但不会显示任何文本

打开页面时的URL如下所示:

file:///F:/MyBooks.htm?search_txt=War and Peace
搜索后的搜索文本?是我在高级URL生成器中编程的 =符号后面的部分是上一个站点或页面中突出显示的文本

我正在使用我从网站上获取的表格和脚本:

<form name="search" action="file:///F:/MyBooks.htm" method="post"

onSubmit="if(this.t1.value!=null && this.t1.value!='')
findString(this.t1.value);return false">

<input type="text" name="t1" id="search_txt" size=100 value="" /> 
<input type="submit" value="Find" name=b1>
</form>

<script language="JavaScript">
<!--
var TRange=null

function findString (str) {
 if (parseInt(navigator.appVersion)<4) return;
 var strFound;
 if (window.find) {

  // CODE FOR BROWSERS THAT SUPPORT window.find

  strFound=self.find(str);
  if (strFound && self.getSelection && !self.getSelection().anchorNode) {
   strFound=self.find(str)
  }
  if (!strFound) {
   strFound=self.find(str,0,1)
   while (self.find(str,0,1)) continue
  }
 }
 else if (navigator.appName.indexOf("Microsoft")!=-1) {

  // EXPLORER-SPECIFIC CODE

  if (TRange!=null) {
   TRange.collapse(false)
   strFound=TRange.findText(str)
   if (strFound) TRange.select()
  }
  if (TRange==null || strFound==0) {
   TRange=self.document.body.createTextRange()
   strFound=TRange.findText(str)
   if (strFound) TRange.select()
  }
 }
 else if (navigator.appName=="Opera") {
  alert ("Opera browsers not supported, sorry...")
  return;
 }
 if (!strFound) alert ("String '"+str+"' not found!")
 return;
}
//-->
</script>
我需要的是能够将URL的最后一部分作为变量传递到表单的第四行

<input type="text" name="t1" id="search_txt" size=100 value="War and Peace" />
你能帮忙吗

谢谢。

您可以使用解析URL中的值:

function getParameterValue(name) {
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}
您可以在脚本中包含该函数,然后可以使用onload Javascript调用来设置值,如下所示:

document.getElementById("search_text").value = getParameterValue("search_text");
对于kicks,这里有一个完整的HTML页面,用于将search_text参数设置为文本字段值:

<html>
<head>
<script>
    function getParameterValue(name) {
        name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
        var regexS = "[\\?&]"+name+"=([^&#]*)";
        var regex = new RegExp( regexS );
        var results = regex.exec( window.location.href );
        if( results == null )
            return "";
        else
            return results[1];
    }

    function setSearchText() {
        document.getElementById("search_text").value = getParameterValue("search_text");
    }
</script>
</head>
<body onload="setSearchText();">
    <input type="text" name="t1" id="search_text" size=100 value="" />
</body>
</html>

我只修改了上面的脚本一行,就解决了%20的问题——感谢Kaleb和所有其他人,我使用了他们代码的一部分来完成这项工作

<script>
function getParameterValue(name) {
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( unescape(window.location.href) );
    if( results == null )
        return "";
    else
        return results[1];
}

function setSearchText() {
        document.getElementById("search_text").value = getParameterValue("search_text");
}
var results=regex.exec unescapewindow.location.href;
通过将这一行改为“unescape now”,文本将进入搜索框,而不带%20。

如果您非常感激,为什么不“接受”他的答案,这样a他将获得信任,b每个人都会看到这个问题已经得到了回答。