js:为什么这样判断不显示
不加蓝色代码部分:输入"web"或者"ask"能正确显示两条a标签;现在想输入不匹配时a标签不显示,所以加了蓝色的代码,但是输入"ask"能正常显示,为什么输入web就不显示了?
<style>
#main{width:600px;margin:0 auto;}
#aaaa{display:block;width:100%}
#mainul{width:100%;}
#mainul a{display:block;cursor: pointer; }#mainul a:hover{color:red}
</style>
<div id="main">
<input id="aaaa"></input>
<div id="mainul">
</div>
</div>
<script>
var text = '{"web":[{"name":"baidu","url":"baidu.com"},{"name":"bing","url":"bing.com"}],"ask":[{"name":"百度图片","url":"baidu.com"},{"name":"bing","url":"bing.com"}]}';
var keyy=document.getElementById("aaaa");
obj = JSON.parse(text);
var mainul=document.getElementById("mainul");
keyy.oninput=function(){
for(var p in obj){
if(p==keyy.value){
for(var i=0;i<obj[p].length;i++){
mainul.innerHTML +="<a title='"+obj[p][i].url+"'>"+obj[p][i].name+"</a>";
}
}
else {
mainul.innerHTML="";
}
}
}
</script>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
非常感谢,你太有才了
简而言之就是在for()循环里,input中输入了web,先判断了web,有值输出,但是没有break跳出,所以后面又去判断了ask,但是输入的值不是ask,所以执行else,就为空了
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<style>
#main{width:600px;margin:0 auto;}
#aaaa{display:block;width:100%}
#mainul{width:100%;}
#mainul a{display:block;cursor: pointer; }
#mainul a:hover{color:red}
</style>
</head>
<div id="main">
<input id="aaaa"></input>
<div id="mainul">
</div>
</div>
<script>
var text = '{"web":[{"name":"baidu","url":"baidu.com"},{"name":"bing","url":"bing.com"}],"ask":[{"name":"百度图片","url":"baidu.com"},{"name":"bing","url":"bing.com"}]}';
var keyy=document.getElementById("aaaa");
obj = JSON.parse(text);
var mainul=document.getElementById("mainul");
keyy.oninput=function(){
for(var p in obj){
if(p==keyy.value){
for(var i=0;i<obj[p].length;i++){
mainul.innerHTML +="<a title='"+obj[p][i].url+"'>"+obj[p][i].name+"</a>";
}
break;
}
else{
mainul.innerHTML="";
}
}
}
</script>