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 に答える