2017-11-07 16 views
1

検索バーに何かが入力されたときにのみドロップダウンを表示させようとしています。 JSに私のコードです関数が呼び出されたときにのみドロップダウンが表示されるようにする

function mysearchFunction() { 
 
    var input, upperCase, ul, li, x, i, ax; 
 
    input = document.getElementById("mysearchInput"); 
 
    upperCase = input.value.toUpperCase(); 
 
    ul = document.getElementById("myList"); 
 
    li = ul.getElementsByTagName("li"); 
 
    for (i = 0; i < li.length; i++) { 
 
    x = li[i].getElementsByTagName("a")[0]; 
 
    if (x.innerHTML.toUpperCase().indexOf(upperCase) === 0) { 
 
     li[i].style.visibility = "visible"; 
 
     li[i].style.display = "block"; 
 
    } else { 
 
     li[i].style.display = "none"; 
 
    } 
 
    } 
 
}
#myList li a { 
 
    border: 1px solid #ddd; 
 
    margin-top: -2px; 
 
    background-color: #f6f6f6; 
 
    padding: 10px; 
 
    text-decoration: none; 
 
    font-size: 16px; 
 
    color: black; 
 
    display: block; 
 
    visibility: collapse; 
 
}
<input type="text" id="mysearchInput" onkeyup="mysearchFunction()" placeholder="Search.."> 
 
<ul id="myList"> 
 
    <li><a href="#">America</a></li> 
 
    <li><a href="#">Africa</a></li> 
 
    <li><a href="#">Antartica</a></li> 
 
    <li><a href="#">Asia</a></li> 
 
    <li><a href="#">Europe</a></li> 
 
    <li><a href="#">Australia</a></li> 
 
</ul>

に続いて、私は目に見えるように表示する必要のあるコンテンツだけを作るしようとしています。私が間違っているところを親切に案内します。表示されているコンテンツはありません。それは崩壊したままです。

+1

私たちは実際にあなたの作業コードを参照し、それを助けることができるようjsFiddleまたは別のアクティブなコーディングのプラットフォームでこれを設定することをお勧め。 – DrCord

答えて

0

CSSセレクタ:#myList liを更新すると、すべてのリンクが非表示になっていました。

function mysearchFunction() { 
 
    var input, upperCase, ul, li, x, i, ax; 
 
    input = document.getElementById("mysearchInput"); 
 
    upperCase = input.value.toUpperCase(); 
 
    //console.log(upperCase); 
 
    ul = document.getElementById("myList"); 
 
    li = ul.getElementsByTagName("li"); 
 
    for (i = 0; i < li.length; i++) { 
 
    x = li[i].getElementsByTagName("a")[0]; 
 
    if (x.innerHTML.toUpperCase().indexOf(upperCase) == 0 && upperCase !== '') { 
 
     li[i].style.visibility = "visible"; 
 
     li[i].style.display = "block"; 
 
    } else { 
 
     li[i].style.display = "none"; 
 
    } 
 
    } 
 
}
#myList li { 
 
    border: 1px solid #ddd; 
 
    margin-top: -2px; 
 
    background-color: #f6f6f6; 
 
    padding: 10px; 
 
    text-decoration: none; 
 
    font-size: 16px; 
 
    color: black; 
 
    display: block; 
 
    visibility: collapse; 
 
}
<input type="text" id="mysearchInput" onkeyup="mysearchFunction()" placeholder="Search.."> 
 
<ul id="myList"> 
 
    <li><a href="#">America</a></li> 
 
    <li><a href="#">Africa</a></li> 
 
    <li><a href="#">Antartica</a></li> 
 
    <li><a href="#">Asia</a></li> 
 
    <li><a href="#">Europe</a></li> 
 
    <li><a href="#">Australia</a></li> 
 
</ul>

+0

編集とあなたの答えのためのbhansaありがとう。しかし、これを行うことによって、これは初めての作業です。検索バーが空の場合、折りたたまれて戻ることはありません。 – Dragvolt

+0

しかし、なぜあなたは '=== 0'をチェックしていますか?インデックスがない場合-1を返すので、' === -1'を使って解決できると思います。 – bhansa

+0

あなたは正しいです。私はそれがそれを行う方法の一つだと思います。しかし、-1をチェックして "e"と入力すると、それはアメリカとヨーロッパにも戻ってくるでしょう。どちらも "e"を含んでいるため。 – Dragvolt

関連する問題