vue实现仿百度搜索效果-模拟跨域请求
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
.select{
background-color: coral;
color: #fff;
}
</style>
<!-- <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> -->
<script src="../node_modules/vue/dist/vue.js"></script>
</head>
<body>
<div id="root">
<!-- @input="search" -->
<input type="text" v-model="ipt" @keydown.down="down" @keydown.up.prevent="up" @keydown.enter="enter">
<button @click="search">搜索</button>
<ul>
<li v-for="(item,idx) of arr" :class="{select:idx==isid}">{{ item }}</li>
</ul>
</div>
<script>
const vm = new Vue({
el:'#root',
data:{
arr:[],
ipt:'',
isid:-1
},
methods:{
search(){
if(this.ipt == '')return;
// cb 回调函数名称
// wd 要搜索的关键词
var s = document.createElement("script");
s.src="http://suggestion.baidu.com/su?cb=callback&wd="+this.ipt;
// s.src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?cb=callback&wd="+this.ipt;
document.body.append(s);
},
down(){
this.isid++;
if(this.isid>3){
this.isid=-1;
}
},
up(){
this.isid--;
if(this.isid<0){
this.isid=4;
}
},
enter(){
console.log(this.arr[this.isid],this.isid)
if(this.isid == -1 || this.isid == 4){
window.open("https://www.baidu.com/s?wd="+this.ipt);
}else{
window.open("https://www.baidu.com/s?wd="+this.arr[this.isid]);
}
}
},
watch:{//监听
// ipt:function() 简写
ipt(newVal,oldVlal){
if(newVal == ''){
return false;
}
console.log(newVal);
console.log(oldVlal);
var s = document.createElement("script");
s.src="http://suggestion.baidu.com/su?cb=callback&wd="+newVal;
document.body.append(s);
}
}
});
function callback(res){
//现在收索显示条数
res.s.length=4;
vm.arr = res.s;
}
</script>
</body>
</html>
本文来自博客园,作者:JackieDYH,转载请注明原文链接:https://www.cnblogs.com/JackieDYH/p/17634672.html