2
我有一段產品搜索代碼,我一直在努力。它很好,但有點倒退。Javascript產品搜索(正在運行,但需要按搜索字詞過濾)
我輸入的關鍵字越多,理想情況下產品越少(因爲它縮小了結果)。但按照我的觀點,在我的搜索系統中輸入的關鍵字越多,就會顯示更多產品,因爲它會查找具有任何關鍵字的產品。 我想改變腳本,使其只能說明結果,如果它們包括全部被搜索的關鍵字,而不是其中的任何...
對不起,囉嗦的解釋。
這裏的肉和土豆(的jsfiddle):
HTML:
<input type="text" id="edit_search" onkeyup="find_my_div();">
<input type="button" onClick="find_my_div();" value="Find">
<div id="product_0" class="name" style="display:none">Mac
<br/>Apple
<br/>
<br/>
</div>
<div id="product_1" class="name" style="display:none">PC
<br/>Windows
<br/>
<br/>
</div>
<div id="product_2" class="name" style="display:none">Hybrid
<br/>Mac PC Apple Windows
<br/>
<br/>
</div>
JAVASCRIPT:
function gid(a_id) {
return document.getElementById(a_id);
}
function close_all() {
for (i = 0; i < 999; i++) {
var o = gid("product_" + i);
if (o) {
o.style.display = "none";
}
}
}
function find_my_div() {
close_all();
var o_edit = gid("edit_search");
var str_needle = edit_search.value;
str_needle = str_needle.toUpperCase();
var searchStrings = str_needle.split(/\W/);
for (var i = 0, len = searchStrings.length; i < len; i++) {
var currentSearch = searchStrings[i].toUpperCase();
if (currentSearch !== "") {
nameDivs = document.getElementsByClassName("name");
for (var j = 0, divsLen = nameDivs.length; j < divsLen; j++) {
if (nameDivs[j].textContent.toUpperCase().indexOf(currentSearch) !== -1) {
nameDivs[j].style.display = "block";
}
}
}
}
}
所以,當你搜索「MAC電腦「應該的唯一結果被顯示的是混合體,因爲它具有這兩個關鍵字。並非全部3種產品。
預先感謝您!
非常感謝您的支持 幫幫我!您的解決方案完美運行,而且正是我所需要的。出色的工作思路和重新安排操作!非常令人印象深刻!! :) – Steve