【发布时间】:2019-01-22 19:37:53
【问题描述】:
如何在 youtube 或许多其他网站上创建搜索栏,以搜索数据库并仅显示覆盖网站其余部分的少数结果。
我已经在 google 和 youtube 上搜索了教程和搜索数据库的一些帮助,以及如何创建搜索栏的其他帮助。但是由于某种原因,我找不到一个可以帮助我弄清楚如何在覆盖页面其余部分且不取代内容的下拉列表中显示项目的方法。我也试过 CSS display: none;但是一旦设置为显示:块;例如,使用 javascript,内容会被替换。提前谢谢你。
我已尝试将此 javascript 用于表格:
function search() {
var input, filter, found, table, tr, td, i, j;
input = document.getElementById("myInput");
filter = input.value.toUpperCase();
table = document.getElementById("myTable");
table.style.display = "block";
tr = table.getElementsByTagName("tr");
for (i = 0; i < tr.length; i++) {
td = tr[i].getElementsByTagName("td");
for (j = 0; j < td.length; j++) {
if (td[j].innerHTML.toUpperCase().indexOf(filter) > -1) {
found = true;
}
}
if (found) {
tr[i].style.display = "";
found = false;
} else if (!tr[i].id.match('^tableHeader')) {
tr[i].style.display = "none";
}
}
}
我的HTML如下:
<table id="myTable">
<tr>
{% for key, value in list.items() %}
<td>{{ key|e }</td>
<td id="name">{{ value|e }}</td>
<td>
<form class="form-signin ajax" action="/signIn" method="post" data-replace="#res" role="form">
<input type="checkbox" name="watchlist" value="Watchlist" onclick="writeToCell (this.id)" id="{{ key|e }}">
</form>
</td>
</tr>
{% endfor %}
</table>
我也在使用 Flask 框架和 python。
在 CSS 中使用 display: none; 加载时看不到表格,并且 h2 标记位于其正下方。
但是,当您开始在表格中输入时,h2 标记会被替换并保留在屏幕上,即使在搜索栏上未选择时也是如此。
我想要它,这样结果(来自 SQL 数据库)只会在搜索某些内容时弹出,并且不会取代其他元素。谢谢。
【问题讨论】:
-
欢迎来到 SO。发布的问题似乎根本不包括解决问题的任何尝试。 StackOverflow 希望您首先尝试解决自己的问题,因为您的尝试有助于我们更好地了解您想要什么。请编辑问题以显示您尝试过的内容,并在Minimal, Complete, and Verifiable example 中说明您遇到的问题。这个链接解释了how to ask a good question。
-
您可能只需要使用 CSS 来防止页面的其余部分向下移动。给你的扩展位'位置:相对'并给它下面的所有东西'位置:绝对'。有关详细信息,请参阅w3schools.com/cssref/pr_class_position.asp。 (而且 Alain 是正确的。好的问题可以显示提问者从他们当前的努力中得到的结果,并清楚地将其与期望的结果进行对比,以便响应者可以帮助绘制从一个到另一个的路径。)
-
@AlainMerigot 我已经添加了我为清楚起见而尝试过的代码。谢谢。
标签: javascript html css search dropdown