我的本地站点中的 JavaScript 搜索函数一直返回未定义

My javascript search function in my local site keeps returning undefined?

本文关键字:函数 搜索 一直 返回 未定义 JavaScript 站点 我的      更新时间:2023-09-26

所以我的搜索功能有问题,我只需要搜索字符串并在页面上显示结果,目前使用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;
}
在你的

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

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

脚本存在三个问题。

  1. 你在提交时调用函数findString()而不传递参数,因此你变得未定义。

  2. 获取搜索文本的代码放置在函数外部

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

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

  1. str 将只有 dom 对象,而不是搜索字符串。所以把它改成

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

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

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