【发布时间】:2015-11-12 20:35:51
【问题描述】:
更新:
我仍然无法呈现任何数据。我使用排序的基本策略是编写一个函数来过滤名为 filterCats 的函数,然后在 getFilterBreed 中将其作为回调调用。这种方法似乎无济于事。这种方法如下:
function getFilterBreed(){
$.getJSON('cats.json', function(cats) {
var cats = cats;
filterCats(cats, criteria);
});
}
function filterCats(cats, criteria){
//renderData(cats.filter(function(c){return c.breed === criteria;}));
var criteria = document.getElementById('filter').value;
var filteredData = cats.filter(function(c){return c.breed === criteria;});
renderData(filteredData);
}
还有 HTML:
<label for="filter">Filter</label>
<input type="text" name="filter" value="" id="filter" onchange="filterBreed()" />
我也尝试过这种让表中的数据消失的方法:
function filterCats(){
$.getJSON('cats.json', function(result) {
var cats = result; // redundant, but kept for readability
var criteria = document.getElementById('filter').value;
var filteredData = cats.filter(function(c){return c.breed === criteria;});
renderData(filteredData);
});
}
<label for="filter">Filter</label>
<input type="text" name="filter" value="" id="filter" onchange="filterCats()" />
我的名为 cat.json 的 JSON 文件看起来像这样,但要大得多:
[{
"breed" : "Abyssinian",
"country" : "Ethiopia",
"coffeePreference" : "espresso",
"picture" : "https://upload.wikimedia.org/wikipedia/commons/thumb/9/9b/Gustav_chocolate.jpg/100px-Gustav_chocolate.jpg"
}, {
"breed" : "Aegean",
"country" : "Greece",
"coffeePreference" : "medium roast, cream and sugar",
"picture" : "https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Aegean_cat.jpg/100px-Aegean_cat.jpg"
}]
最后我会相应地渲染数据,这是可行的:
function renderData(cats){
var output='<table id="indextable" border="1" cellpadding="10" cellspacing="0" style="border-collapse:collapse;">';
output+="<thead>"
output+="<tr>";
output+="<th> HeadShot </th>";
output+="<th><button onclick='getSortedBreedData()'>Breed</button></th>";
output+="<th><button onclick='getSortedCountryData()'>Country</button></th>";
output+="<th><button onclick='getSortedCoffeeData()'>CoffeePreference</button></th>";
output+="</tr>";
output+="</thead>"
for (var i in cats) {
output+="<tbody>"
output+="<tr>";
output+="<td><img src='" + cats[i].picture+"' alt='missing cat picture'></td>"
output+="<td>" + cats[i].breed + "</td>"
output+="<td>" + cats[i].country + "</td>"
output+="<td>" + cats[i].coffeePreference + "</td>"
output+="</tr>";
output+="</tbody>"
}
output+="</table>";
document.getElementById("catTable").innerHTML=output;
}
任何帮助将不胜感激。
【问题讨论】:
-
"No libraries"- 使用 jQuery -
真正的问题是什么?
-
澄清 Shomz...api.jquery.com/jquery.getjson
-
@Shomz 我为语义道歉。我应该说没有插件。问题是,似乎我的函数 filterData 应该从我的输入字段中提取并工作。为什么这没有发生?我不是要你为我做任何工作。我只是想学习基本的前端 JS。谢谢!
-
@simon 我想弄清楚如何从我的 HTML 表单中提取数据 id = filter 到我的函数 filterData 中。
标签: javascript jquery filtering