我的本地网站中的javascript搜索功能一直在返回undefined?

时间:2016-01-25 08:18:01

标签: javascript html

所以我的搜索功能有问题,我只需要搜索字符串并在页面上显示结果,目前使用的是Javascript和HTML,这是我的代码。

<form id="searchForm" action="javascript:findString();" class="navbar-form navbar-right" role="search">
    <div class="form-group waves-effect waves-light">
          <input type="text" id="searchItem" class="form-control" placeholder="Search">
          <input class="btn" type="submit" onclick="document.getElementById('searchForm').submit(); return false;" value="Search" />
    </div>
</form>

然后这是我的Javascript函数

var TRange = null;
var str = document.getElementById("searchItem");

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

        // CODE FOR BROWSERS THAT SUPPORT window.find

        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;
}

2 个答案:

答案 0 :(得分:0)

你的代码中的

是str的元素,你需要得到它的值。

var TRange = null;

function findString() {
  var str = document.getElementById("searchItem").value;

  ...

答案 1 :(得分:0)

脚本有三个问题。

  1. 您正在调用函数findString()onSubmit而不传递参数,因此您未定义。

  2. 获取搜索文本的代码位于函数

  3. 之外

    var str = document.getElementById("searchItem");

    因此,它只会在初始页面加载时执行,并且只要你点击提交,它就不会从输入中返回当前文本。

    1. str只有dom对象而不是搜索字符串。所以将其改为
    2. var str = document.getElementById("searchItem").value;

      最后,您的脚本应如下所示。

      var TRange = null;
      
      function findString() {
      var str = document.getElementById("searchItem").value;
      
      //rest of the search code goes here
      
      }