【发布时间】:2017-08-09 04:34:38
【问题描述】:
我会尽量说明这一点。但是现在,当它被调用到 HTML 中时,我会显示一个表格。但是,当有人输入总统姓名时,我希望完整列出的表格消失并显示该人单击“搜索总统”后过滤的结果。我尝试了一个条件 if else 语句,但它清除了表格(使其空白),然后它让我不得不再次单击,然后显示过滤结果。有什么方法可以防止双击吗?
JSfiddle 用于查看https://jsfiddle.net/rtomino/7Lod1szp/1/
我有条件,但它让我双击。
if (document.getElementById('presidentialTable').innerHTML !== "") {
document.getElementById("presidentialTable").innerHTML = "";
} else {
document.getElementById('presidentialTable').appendChild(table);
}
HTML
<form>
<label for="name">Name:</label>
<input id='input' placeholder="President Name" type="text">
<button onclick="loadPresidents()" type="button">Search for Presidents</button> <button type="button" onclick="clearTable()">Clear</button>
<div id="presidentialTable"></div>
</form>
JS
function loadPresidents() {
"use strict";
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) {
var data = this.responseText,
jsonResponse = JSON.parse(data),
table = document.createElement('table');
table.setAttribute('class', 'history');
var properties = ['number', 'name', 'date', 'took_office', 'left_office'];
var capitalize = function(s) {
return s.charAt(0).toUpperCase() + s.slice(1);
};
function filterPresidents(data) {
var input = document.getElementById('input').value;
return data.filter(function(historicalData) {
return historicalData.name.toLowerCase().indexOf(input.toLowerCase()) != -1;
});
}
var tr = document.createElement('tr');
for (var i = 0; i < properties.length; i++) {
var th = document.createElement('th');
th.appendChild(document.createTextNode(capitalize(properties[i])));
tr.appendChild(th);
}
table.appendChild(tr);
var tr, row;
var filtered = filterPresidents(jsonResponse["presidents"].president);
for (var r = 0; r < filtered.length; r++) {
tr = document.createElement('tr');
row = filtered[r];
for (var i = 0; i < properties.length; i++) {
var td = document.createElement('td');
td.appendChild(document.createTextNode(row[properties[i]]));
tr.appendChild(td);
}
table.appendChild(tr);
}
if (document.getElementById('presidentialTable').innerHTML !== "") {
document.getElementById("presidentialTable").innerHTML = "";
} else {
document.getElementById('presidentialTable').appendChild(table);
}
}
};
xhttp.open("GET", "http://schwartzcomputer.com/ICT4570/Resources/USPresidents.json", true);
xhttp.send();
}
loadPresidents();
function clearTable() {
document.getElementById("presidentialTable").innerHTML = "";
}
【问题讨论】:
标签: javascript html json button