我有一些代码可以从输入源搜索页面上显示的当前信息,这是一个加载的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>
目前正确显示该单词所在的行数。
答案 0 :(得分: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>");
}