vue输入关键字,可以搜索到包含所有关键字的句子,也可以输入不连续的关键字,精准查到到包含这些不连续关键字的句子,关键字高亮,完整例子
时间: 2024-02-23 08:02:26 浏览: 245
好的,针对您的问题,我可以给出一个简单的示例代码,方便您参考:
HTML文件:
```
<div id="app">
<input type="text" v-model="searchKeyword" @input="search" placeholder="输入关键字搜索">
<ul>
<li v-for="sentence in sentences" v-html="highlight(keywordList, sentence)"></li>
</ul>
</div>
```
JavaScript文件:
```
new Vue({
el: '#app',
data: {
sentences: ['Vue.js 是一个渐进式JavaScript框架', 'Vue.js 可以用于构建大型的单页应用程序', 'Vue.js 由Evan You创建', 'Vue.js 是一个开源项目'],
searchKeyword: '',
keywordList: []
},
methods: {
search() {
this.keywordList = this.searchKeyword.trim().split(/\s+/)
},
highlight(keywordList, sentence) {
let highlightedSentence = sentence
keywordList.forEach(keyword => {
highlightedSentence = highlightedSentence.replace(new RegExp(keyword, 'gi'), '<span class="highlighted">' + keyword + '</span>')
})
return highlightedSentence
}
}
})
```
在这个示例中,我们定义了一个包含了多个句子的数组 `sentences`,以及一个搜索框 `input`,当用户在搜索框中输入关键字时,我们将输入的关键字按照空格进行分割,存储在 `keywordList` 数组中。
然后,我们使用 `v-for` 指令遍历 `sentences` 数组中的每个句子,并使用 `v-html` 指令将经过高亮处理的句子输出。
在 `highlight` 方法中,我们使用了 JavaScript 的字符串替换方法 `replace`,将句子中出现的每个关键字都用 `<span>` 标签进行了包裹,并指定了 CSS 样式 `highlighted`,以便在页面中将关键字高亮显示。
希望这个简单的示例能够帮助您解决问题,如果您还有其他疑问,欢迎继续提问。
阅读全文
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)