アイテムのリストとテキスト ボックスがあり、テキスト ボックスの内容と一致しないアイテムに hidden 属性を適用したいと考えています。これをリアルタイムでブラウザ上で行うためにJavaScriptを使用しています。これが私の HTML です (g:textbox について心配する必要はありません。私は grails でこれを行っています)。
Filter List :<g:textBox id = filter onkeyup = Javascript:filter()>
<ul id = 'terms'>
<li id = 'AFUE'>AFUE
<p> Annualized Fuel Utilization Efficiency is a measure of your furnace’s heating efficiency. The higher the AFUE percentage, the more efficient the furnace. The minimum percentage established by the DOE for furnaces is 78.</p>
</li>
<li id = 'Airflow'>Airflow
<p> The distribution or movement of air. </p>
</li>
<li id = 'Air Handler/Coil Blower'>Air Handler/Coil Blower
<p> The indoor part of an air conditioner or heat pump that moves cooled or heated air throughout the ductwork of your home. An air handler is usually a furnace or a blower coil.</p>
</li>
<li id = 'Bioaerosols'>Bioaerosols
<p>Microscopic living organisms that grow and multiply in warm, humid places.</p>
</li>
</ul>
html の設定ができたので、今度は javascript を書く必要があります。
1. filter.text を正しく使用しているかどうかわからない 2. ul id 内の li id にアクセスする方法がわからない
function filter(){
// on each li item in ul where ul id = 'terms'
{
if //li item id.match(${filter.text})
{
//li item.hidden = "false"
}
else if !//li item id.match(${filter.text})
{
//li item.hidden = "true"
}
else if ${filter.text} = ""
{
//set all items hidden = "false"
}
}
}
要素のコレクションを反復する必要があると言いたいのですが、それは私から出てくるルビー/キュウリかもしれません