我想通過單擊列表項中的一列/字符串來過濾項目列表。當我點擊銷售時,只會顯示銷售類別列表中的項目。當我再次點擊銷售時,將顯示列表中的所有項目。Javascript在jsfiddle中工作,但不在ASP中.net
它就像我要上jsfiddle
但爲什麼它沒有在Visual Studio中工作的ASP .NET?它拋出
...
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;
}
});
您是否調試過檢查「p」元素是否存在? –
你確定'p'中有'a'元素嗎?如果沒有,錯誤被拋出,因爲你有效地試圖分配'a = undefined [0];'< - 從undefined獲取第零個元素是不太可能的AFAIK –
它在jsfiddle中正常工作。在Visual Studio中,p元素在innerHTML字段中正好是我想要的東西。 – ThePavolC