给出一个html页面,对应的js以及数据文本,其中功能需求为:一个类似于百度搜索的功能,输入字符串,对应下拉框显示相关内容的列表,在下拉列表中可以选中需要的内容,其中搜索数据是从数据文本中解析出来的,注意必须先解析出来数据,然后再搜索匹配内容,不然容易异步搜索不出来
时间: 2024-04-07 18:32:03 浏览: 56
类似于百度检索功能 js
以下是一个简单的实现示例,包括一个 HTML 页面、一个 JavaScript 文件和一个数据文本。
HTML 页面:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>搜索功能示例</title>
<script src="search.js"></script>
</head>
<body>
<input type="text" id="search-input" onkeyup="search()">
<div id="search-result"></div>
</body>
</html>
```
JavaScript 文件(search.js):
```javascript
// 定义一个全局变量,用于存储解析出来的数据
var searchData = [];
// 解析数据
function parseData(dataText) {
var dataArray = dataText.split("\n");
for (var i = 0; i < dataArray.length; i++) {
var item = dataArray[i].split(",");
searchData.push({
name: item[0],
url: item[1]
});
}
}
// 搜索功能
function search() {
var searchInput = document.getElementById("search-input");
var searchResult = document.getElementById("search-result");
searchResult.innerHTML = "";
var keyword = searchInput.value.trim().toLowerCase();
if (keyword === "") {
return;
}
var matchedData = searchData.filter(function(item) {
return item.name.toLowerCase().indexOf(keyword) !== -1;
});
var resultList = document.createElement("ul");
matchedData.forEach(function(item) {
var resultItem = document.createElement("li");
var resultLink = document.createElement("a");
resultLink.href = item.url;
resultLink.innerHTML = item.name;
resultItem.appendChild(resultLink);
resultList.appendChild(resultItem);
});
searchResult.appendChild(resultList);
}
// 加载数据并解析
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
parseData(xhr.responseText);
}
};
xhr.open("GET", "data.txt");
xhr.send();
```
数据文本(data.txt):
```
JavaScript, https://developer.mozilla.org/en-US/docs/Web/JavaScript
HTML, https://developer.mozilla.org/en-US/docs/Web/HTML
CSS, https://developer.mozilla.org/en-US/docs/Web/CSS
Node.js, https://nodejs.org/en/
React, https://reactjs.org/
Vue, https://vuejs.org/
```
在这个示例中,我们首先定义了一个全局变量 `searchData`,用于存储解析出来的数据。然后定义了一个 `parseData` 函数,用于解析数据文本并将解析出来的数据存储到 `searchData` 中。
接着定义了一个 `search` 函数,用于处理搜索功能。该函数首先获取输入框中的关键字,然后使用 `filter` 函数从 `searchData` 中筛选出与关键字匹配的数据,最后将匹配的结果显示在下拉列表中。
最后,在 JavaScript 文件的结尾使用 AJAX 技术加载数据文本并解析,以确保数据解析完成后再处理搜索功能。
阅读全文