リストアイテムの1つの列/文字列をクリックして、アイテムのリストをフィルタリングしたい。Sales をクリックすると、Sales カテゴリのリストのアイテムのみが表示されます。Sales をもう一度クリックすると、リスト内のすべての項目が表示されます。
それは私がjsfiddleで望むように動作します
しかし、ASP .net の Visual Studio で機能しないのはなぜですか? 例外をスローします
...
var a = p.getElementsByTagName("a")[0];
...
これは私のHTMLコードです:
<div data-role="page" id="page1">
<div data-role="content">
<ul data-role="listview" data-inset="false" data-filter="true" id="testList">
<li data-icon="false">
<p class="ui-li-heading">
<strong> 1</strong>
</p>
<p class="ui-li-aside">
<span>
<a href="javascript:void(0)" class="areaItem" id="areaItem">Sales</a>
</span>
<span class="ui-icon ui-icon-gear" style="display: inline-block;"></span>
<span class="ui-icon ui-icon-check" style="display: inline-block;"></span>
</p>
</li>
</div>
</div>
これは私のJavascriptです:
var filtered = 0;
$(".areaItem").click(function () {
var SearchTerm = $(this).text();
var ul = document.getElementById("testList");
var liArray = ul.getElementsByTagName("li");
for(var i=0; i<liArray.length; i++) {
var p = liArray[i].getElementsByTagName("p")[0];
var a = p.getElementsByTagName("a")[0];
if(filtered == 1) {
$(liArray[i]).show();
} else {
if(a.text.localeCompare(SearchTerm) != 0) {
$(liArray[i]).hide();
}
}
}
if (filtered == 0) {
filtered = 1;
} else {
filtered = 0;
}
});