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.");
}
}
嗨,上面的代码应该是:
适用于至少有一个或多个匹配的所有情况。出于某种原因,我不明白,当输入的单词根本不返回匹配时,它不起作用。这似乎完全打破了代码,即使在0匹配时警报也不返回。
有什么线索?
答案 0 :(得分:2)
当.match()
找不到匹配项时,它会返回null
。因此,当“_count”为null
时,下一行:
_count2 = _count.length;
会导致错误(您可以在开发者控制台中看到错误!)。
当.match()
找到一个或多个匹配项时,它会返回一个数组。因此,您的函数中的后续代码:
if (_count < 1) {
没有任何意义,因为您将数组与数字进行比较。