0

我有一些代码可以从输入源搜索页面上显示的当前信息,输入源是一个加载的 XML。然后显示找到该单词的次数,然后应该显示找到该单词的行尽管目前它正在显示所有行。代码是

function searchResults(query) {
    var temp = "\\b" + query + "\\b";
    var regex_query = new RegExp(temp, "gi");
    var currentLine;
    var num_matching_lines = 0;
    $("#mainOutput").empty();
    $("LINE", g_playDOM).each(
            function() {
                currentLine = $(this).text();
                matchesLine = currentLine.replace(regex_query,
                        '<span class="query_match">' + query + '</span>');

                if (currentLine.search(regex_query) > 0)
                    num_matching_lines++;
                $("#mainOutput").append("<p>" + matchesLine + "</p>");
            });
    $("#sideInfo").append(
            "<p>Found " + query + " in " + num_matching_lines + " lines</p>");
}

$(document).ready(function() {

    loadPlay();

    $("#term_search").focus(function(event) {
        $(this).val("");
    });

    $("#term_search").keypress(function(event) {
        if (event.keyCode == 13)
            searchResults($("#term_search").val());
    });

    $('#term-search-btn').click(function() {
        searchResults($("#term_search").val());
    });
});
</script>

目前,单词所在的行数正在正确显示。

4

1 回答 1

0

如果您希望在条件中执行一行代码,则需要在其周围放置花括号。否则,只会执行下一个操作项。在您的情况下,增加匹配的行数。

您的后续操作项,将找到的行附加到 DOM 将在每个分支上执行,因为该if语句已经完成了它的工作。下面的违规行:

if ( currentLine.search(regex_query) > 0 ) num_matching_lines++;
    $("#mainOutput").append("<p>" + matchesLine + "</p>");

固定的:

if ( currentLine.search(regex_query) > 0 ) {
    num_matching_lines++;
    $("#mainOutput").append("<p>" + matchesLine + "</p>");
}
于 2012-05-01T13:30:34.783 回答