javascript - 为什么未找到匹配项时计数会失败?

标签 javascript

var _myTxt;
var _myWord;
var _count;
var _count2;

function _findWord() {
    _myTxt = document.getElementById('myTextBox').value;
    _myWord = document.getElementById('myTxtField').value;
    var re = new RegExp(_myWord, "gi");
    _myTxt = _myTxt.replace(re, "<span style='font-weight: bold'>$&</span>");
    _count = _myTxt.match(re);
    _count2 = _count.length;
    alert(_count.length); // alert returns nothing when there is 0 match ?!
    if (_count < 1) {
        document.getElementById("_idProcessedTxt").innerHTML = "There is no matching occurence for searched word";
    } else {
        document.getElementById("_idProcessedTxt").innerHTML = _myTxt;
        document.getElementById("_idProcessedTxt2").innerHTML = ("Your word was matched : " + _count2 + " times.");
    }
}

嗨,上面的代码应该是:

  1. 将一个字符串替换为另一个字符串(实际上是带有 span 标签的相同字符串)和
  2. 计算出现/找到替换的次数。

它适用于至少有一个或多个匹配项的所有情况。由于某种原因我不明白,当输入的单词根本不匹配时它不起作用。这似乎完全破坏了代码,即使当有 0 个匹配时警报也不会返回任何内容。

知道为什么吗?

最佳答案

.match()找不到匹配项时,它返回null。因此,当“_count”为 null 时,下一行:

_count2 = _count.length;

将导致错误(您将在开发者控制台中看到该错误!)。

.match() 确实找到一个或多个匹配项时,它会返回一个数组。因此,您的函数中的后续代码:

    if (_count < 1) {

没有任何意义,因为您正在将数组与数字进行比较。

关于javascript - 为什么未找到匹配项时计数会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18237358/

相关文章:

javascript - 我的 redux 助手应该如何引用调度?

javascript - 如何在不影响内部 anchor 的情况下使 li 可点击?

javascript - jQuery .each() 方法不会遍历所有图像

javascript - 如何在 multer 中上传带有可选数据的图像?

javascript - Momentjs:如何将一个时区的日期/时间转换为 UTC 日期/时间

javascript - 如何添加过滤器: alpha using javascript?

javascript - 如何使用适用于 Javascript 的 AWS-SDK 搜索我的 CloudSearch 域?

javascript - 这是您合并 Onload 事件的方式吗?

javascript - 使用 babel 为 React 应用程序转译 jsx

javascript - BootStrap Modal + JS/AJAX 复选框表单提交