私はJavaScriptが初めてで、少量のデータに対して検索機能を実行しようとしていました。
次の HTML コードがあります。
<form name="f1">
<input type="text" name="sbox" onkeydown=keysearch(event)>
<button type="button" onclick=search()></button>
</form>
そして、機能を実装する次の JavaScript (すべてのブロックを非表示にしてから、それらのテキスト (on ) と検索ボックスのテキストを比較して、ブロックの一部を表示します):
function search() {
word = f1.sbox.value.toLowerCase()
v = document.getElementsByClassName('item')
for( i=0; i<v.length; ++i ) {
v[i].style.display = 'none'
s1 = i.toString()
if( document.getElementById(s1).innerHTML.toLowerCase().indexOf(word) != -1 ) {
s2 = s1 + "b";
document.getElementById(s2).style.display = 'block'
}
}
}
そのような要素に適用するには:
<div id="items">
<article id="0b" class="item">
<h3><a id="0" href="http://www.example.com/">Example</a></h3>
<img src="example.jpg">
</article>
(...)
</div><!-- end items -->
それで、すべてが正しく機能します。問題は、マウスをクリックして検索ボックスを使用するだけでなく、ユーザーがEnterキーを使用できるようにする別の機能を追加しようとしたときです。これは私のコードです:
function keysearch(e) {
var charCode
if( e && e.which ) {
charCode = e.which
} else if( window.event ) {
e = window.event
charCode = e.keyCode
}
if( charCode == 13 ) {
search() // call the function above
}
}
見つからない問題があります。実際、2 番目の関数も動作しますが、動作が速すぎるため、1 秒もかからずに結果を確認でき、その後すべてが元の場所に戻ります。
お願いします...それについて何か考えはありますか?
どうもありがとうございました。
PS: その前に、この検索ボックスの「インスタント検索」を行うので、何かアイデアがあれば... ありがとうございます。