【发布时间】:2021-11-30 19:06:11
【问题描述】:
我正在使用 html 输入字段来搜索来自 OMDb 的结果,目前我只是将它们显示在列表中的表单下方,但希望它们出现在输入字段下方,有点像在 Google 上时主页,您会得到一些结果,它会下拉显示您已经输入的内容的潜在搜索结果(即,如果我输入上它可能会在它下方弹出显示尚志,Shei xian ai shang ta de,Hai shang hua 、大上海等)。
<li>
<label for="search">OMDb lookup:</label>
<input id="search" placeholder="start typing film title" type="input" name="search" maxlength="255" onkeyup="waitForIt()">
</li>
<li>
<ul id="omdbReturn">
</ul>
</li>
是我拥有的 HTML,那么我的 javascript 是:
var timer = null;
function waitForIt() {
clearTimeout(timer);
timer = setTimeout(omdbSearch, 1000)
};
function omdbSearch() {
let searchTerm = encodeURI(document.getElementById("search").value);
$.getJSON('https://www.omdbapi.com/?apikey=<apikey>&type=movie&page=1&s=' + searchTerm).then(function(omdbResults) {
if (omdbResults.Response !== 'False') {
let tot = omdbResults.totalResults;
if (tot > 10) { //only return up to first ten results
tot = 10;
}
document.getElementById('omdbReturn').innerHTML = '';
for (i = 0; i < tot; i++) {
document.getElementById('omdbReturn').innerHTML += ('<li id="' + omdbResults.Search[i].imdbID + '">' + omdbResults.Search[i].Title + ' (' + omdbResults.Search[i].Year + ')</li>');
}
let list = document.getElementById("omdbReturn");
function Populate() {
$.getJSON('https://www.omdbapi.com/?apikey=<apikey>&type=movie&plot=full&i=' + this.id).then(function(omdbMovie) {
document.getElementById("film").value = omdbMovie.Title + " (" + omdbMovie.Year + ")";
document.getElementById("image_url").value = omdbMovie.Poster;
document.getElementById("desc").value = omdbMovie.Plot;
document.getElementById("imdb").value = "https://www.imdb.com/title/" + omdbMovie.imdbID + "/";
document.getElementById('omdbReturn').innerHTML = '';
});
}
for (i = 0; i <= list.childElementCount - 1; i++) {
list.children[i].addEventListener("click", Populate);
}
} else {
document.getElementById('omdbReturn').innerHTML = '';
}
});
}
所以这一切都很好,产生了一个很好的小结果列表,如果我点击一个结果,它会在我的表单的其余部分填充相关字段(让用户不必去 IMDb 并复制/粘贴结果他们自己) - 我只是想改进它在屏幕上的显示方式,但我的 CSS 很糟糕,谷歌并没有真正理解我想要问的内容(所以缺少我想用来确定搜索的措辞)。
不要找人为我定制脚本,只要指出正确的方向,将不胜感激!
[编辑]
想一想,下面是 Javascript 注入的 HTML 的样子,再次使用“Shang”搜索示例:
<ol id="omdbReturn">
<li id="tt9376612">Shang-Chi and the Legend of the Ten Rings (2021)</li>
<li id="tt8443704">Shei xian ai shang ta de (2018)</li>
<li id="tt0156587">Hai shang hua (1998)</li>
<li id="tt2169322">Bei Jing yu shang Xi Ya Tu (2013)</li>
<li id="tt6628322">Shang hai bao lei (2019)</li>
<li id="tt2458314">Da Shang Hai (2012)</li>
<li id="tt0492473">Kan shang qu hen mei (2006)</li>
<li id="tt0101864">Fei zhou he shang (1991)</li>
<li id="tt9081562">Bi bei shang geng bei shang de gu shi (2018)</li>
<li id="tt11448076">Xuan ya zhi shang (2021)</li>
</ol>
【问题讨论】:
-
您有什么具体问题吗?是什么让您无法像为任何其他想要设置样式的元素一样编写 CSS?
-
感谢 mplungjan 的建议,我已经查看并已将其编码,因此它创建了下拉列表,现在只需要弄清楚如何填充选择。干杯
标签: javascript html css forms