1

ユーザー入力に一致するテキストを表示しようとしています。ユーザーが 'a' などの最初の文字を入力すると結果が表示されますが、'as' などの 2 番目の文字が入力されても何も起こりません。だから私はユーザーが入力したときに野球と速いが表示されるようにしたい.

// JavaScript Document

s1= new String()
s2= new String()
var myArray = new Array();

myArray[0] = "Football";
myArray[1] = "Baseball";
myArray[2] = "Cricket";
myArray[3] = "Fast";


function test() //  called onkeyup() event
{
 s1 = document.getElementById('filter').value;
 s2 = s2+s1;
 arraysearch();
}

function arraysearch()
{
    for(i=0; i<myArray.length; i++)
    { 
       if (myArray[i].indexOf(s2) != -1) // also tried using match method
       { 
           alert('Matched');           
           document.getElementById('placeholder').innerHTML += myArray[i] + "<br/>";
       }
    }
}
4

3 に答える 3

1
 <script type="text/javascript" language="javascript">
            function ShowMe(obj) {

                var lbl = document.getElementById('divContent');

                var myArray = new Array();
                myArray[0] = "Football";
                myArray[1] = "Baseball";
                myArray[2] = "Cricket";
                myArray[3] = "Fast";

                var s2 = obj.value.toLowerCase();

                for (i = 0; i < myArray.length; i++) {
                    if (myArray[i].toLowerCase().indexOf(s2) != -1) 
                    {
                        lbl.innerHTML = myArray[i];
                    }
                }

            }

        </script>

HTML コード

<div>
<h1>JS Test</h1>
    <input id="txtInput" onkeyup="javascript:ShowMe(this)" />
    <div id="divContent">

    </div>
</div>

于 2012-09-26T08:12:12.553 に答える
1

これを試してみて、あなたを助ける解決策を実装しました。正規表現を使用して、文字列をより適切に比較および照合できます。dom操作のためだけにjqueryを使用しますが、それはそれについてです。先に進んで編集できます。それが役に立てば幸い。

http://jsfiddle.net/cy4QH/2/

于 2012-09-26T08:13:57.413 に答える
0

「filter」が入力要素で、その「onKeyUp='javascript:arraysearch()'」を設定すると、このコードが機能するはずです。

function arraysearch() 
{ 
  for(var i in myArray) 
  {  
    if (myArray[i].toLowerCase().indexOf(document.getElementById('filter').value) != -1) 
    {  
       alert('Matched');            
       document.getElementById('placeholder').innerHTML += myArray[i] + "<br/>"; 
    } 
  } 
}
于 2012-09-26T07:53:57.420 に答える