2016-08-23 104 views
0

我想用javascript来做一个简单的搜索功能,但由于某种原因,我无法弄清楚它什么时候没有向我展示任何东西,当我进入我的搜索栏。提前致谢。这里是代码:使用Javascript的简单搜索功能

var terms = new Array(); 
 
var max = 6; 
 
      
 
for (i=1;i<=max;i++) { 
 
    terms[i] = new Array(); 
 
} 
 
      
 
terms[1]['search'] = 'google internet search web'; 
 
terms[1]['des'] = 'Google search'; 
 
terms[1]['lnk'] = 'http://www.google.com'; 
 

 
terms[2]['search'] = 'gmx mail email'; 
 
terms[2]['des'] = 'GMX Mail'; 
 
terms[2]['lnk'] = 'http://www.gmx.com'; 
 

 
terms[3]['search'] = 'web mail email'; 
 
terms[3]['des'] = 'Web Mail'; 
 
terms[3]['lnk'] = 'http://www.web.com'; 
 

 
terms[4]['search'] = 'youtube video your self'; 
 
terms[4]['des'] = 'Youtube Video'; 
 
terms[4]['lnk'] = 'http://www.youtube.com'; 
 

 
terms[5]['search'] = 'wikipedia search knowledge'; 
 
terms[5]['des'] = 'Wikipedia'; 
 
terms[5]['lnk'] = 'http://www.wikipedia.com'; 
 

 
terms[6]['search'] = 'facebook social'; 
 
terms[6]['des'] = 'Facebook'; 
 
terms[6]['lnk'] = 'https://www.facebook.com'; 
 
      
 
function search() { 
 
    var input = document.getElementById('searchbar').value.toLowerCase(); 
 
    var i=0; 
 
    var list=""; 
 
    var pos=-1; 
 
       
 
    if(input!="") { 
 
     for(i=1; i<=max; i++) { 
 
      pos= terms[i]['search'].indexOf(input); 
 
      
 
      if(pos!=-1) { 
 
       list= list + '<a class="search_lnk" href="' + terms[i]['des'] + '</a>' + '<br>'; 
 
      } 
 
      pos=-1; 
 
     } 
 
          
 
     if(list==""){ 
 
      document.getElementById("listing").innerHTML = ""; 
 
      document.getElementById("listing").style.display = "none"; 
 
     } else { 
 
      document.getElementById("listing").innerHTML = list; 
 
      document.getElementById("listing").style.display = "block"; 
 
     } 
 
    } 
 
}
.cont_ges { 
 
    border: 1px dotted #0080FF; 
 
    border-radius:10px; 
 
    position:absolute; 
 
    width:220px; 
 
    height:46px; 
 
    left:50%; 
 
    top:50%; 
 
    margin-left:-110px; 
 
    margin-top:-23px; 
 
} 
 
      
 
.ubers { 
 
    font-size:18px; 
 
    color:#800080; 
 
    font-weight:bold; 
 
    font-style:italic; 
 
    text-align:center; 
 
    position:absolute; 
 
    width 100%; 
 
    height:22px; 
 
    left:0px; 
 
    top:0px; 
 
    margin-top:-25px; 
 
} 
 
      
 
.such_lnk { 
 
    font-size:16px; 
 
    color:#FF8000; 
 
    font-style:italic; 
 
    text-decoration: none; 
 
} 
 
     
 
.suche_lnk a:hover { 
 
    color:#FFFF00; 
 
    text-decoration: underline; 
 
    z-index:10; 
 
} 
 

 
#listing { 
 
    position:absolute; 
 
    left:5px; 
 
    top:35px; 
 
    width: 120%; 
 
    overflow:auto; 
 
} 
 

 
#searchbar{ 
 
    position:absolute; 
 
    left:5px; 
 
    width:90%; 
 
}
<div class="cont_ges"> 
 
    <span class="ubers">Enter</span> 
 
    <input id="searchbar" type="text" value="Search.." onClick="this.value='';" onKeyup="search();"> 
 
    <div id="listing"></div> 
 
</div>

回答

1

请更正search功能:

function search() { 
    var input = document.getElementById('searchbar').value.toLowerCase(); 
    var i=0; 
    var list=""; 
    var pos=-1; 

    if(input!="") { 
     for(i=1; i<=max; i++) { 
      pos= terms[i]['search'].indexOf(input); 

      if(pos!=-1) { 

       // You have error in this line 
       list= list + '<a class="search_lnk" href="'+terms[i]['lnk']+'">' + terms[i]['des'] + '</a>' + '<br>'; 

      } 
      pos=-1; 
     } 

     if(list==""){ 
      document.getElementById("listing").innerHTML = ""; 
      document.getElementById("listing").style.display = "none"; 
     } else { 
      document.getElementById("listing").innerHTML = list; 
      document.getElementById("listing").style.display = "block"; 
     } 
    } 
} 

工作demo

1

只是正确的这条线,预期它会工作(由于某种原因,这里就不再正确的所以测试控制台上运行,但它的做工精细的html页)

if(pos!=-1) { 
    list= list + '<a class="search_lnk" href="' + terms[i]['des']+ '">'+terms[i]['des']+ '</a>' + '<br>'; 
} 

var terms = new Array(); 
 
var max = 6; 
 
      
 
for (i=1;i<=max;i++) { 
 
    terms[i] = new Array(); 
 
} 
 
      
 
terms[1]['search'] = 'google internet search web'; 
 
terms[1]['des'] = 'Google search'; 
 
terms[1]['lnk'] = 'http://www.google.com'; 
 

 
terms[2]['search'] = 'gmx mail email'; 
 
terms[2]['des'] = 'GMX Mail'; 
 
terms[2]['lnk'] = 'http://www.gmx.com'; 
 

 
terms[3]['search'] = 'web mail email'; 
 
terms[3]['des'] = 'Web Mail'; 
 
terms[3]['lnk'] = 'http://www.web.com'; 
 

 
terms[4]['search'] = 'youtube video your self'; 
 
terms[4]['des'] = 'Youtube Video'; 
 
terms[4]['lnk'] = 'http://www.youtube.com'; 
 

 
terms[5]['search'] = 'wikipedia search knowledge'; 
 
terms[5]['des'] = 'Wikipedia'; 
 
terms[5]['lnk'] = 'http://www.wikipedia.com'; 
 

 
terms[6]['search'] = 'facebook social'; 
 
terms[6]['des'] = 'Facebook'; 
 
terms[6]['lnk'] = 'https://www.facebook.com'; 
 
      
 
function search() { 
 

 

 
    var input = document.getElementById('searchbar').value.toLowerCase(); 
 
    var i=0; 
 
    var list=""; 
 
    var pos=-1; 
 
       
 
    if(input!="") { 
 
     for(i=1; i<=max; i++) { 
 
      pos= terms[i]['search'].indexOf(input); 
 
\t \t \t 
 
\t \t \t console.log(terms[i]['search']+pos); 
 
      
 
      if(pos!=-1) { 
 
       list= list + '<a class="search_lnk" href="' + terms[i]['des']+ '">'+terms[i]['des']+ '</a>' + '<br>'; 
 
      } 
 
      pos=-1; 
 
     } 
 
\t \t 
 
\t \t console.log(list); 
 
          
 
     if(list==""){ 
 
      document.getElementById("listing").innerHTML = ""; 
 
      document.getElementById("listing").style.display = "none"; 
 
     } else { 
 
      document.getElementById("listing").innerHTML = list; 
 
      document.getElementById("listing").style.display = "block"; 
 
     } 
 
    } 
 
}
.cont_ges { 
 
    border: 1px dotted #0080FF; 
 
    border-radius:10px; 
 
    position:absolute; 
 
    width:220px; 
 
    height:46px; 
 
    left:50%; 
 
    top:50%; 
 
    margin-left:-110px; 
 
    margin-top:-23px; 
 
} 
 
      
 
.ubers { 
 
    font-size:18px; 
 
    color:#800080; 
 
    font-weight:bold; 
 
    font-style:italic; 
 
    text-align:center; 
 
    position:absolute; 
 
    width 100%; 
 
    height:22px; 
 
    left:0px; 
 
    top:0px; 
 
    margin-top:-25px; 
 
} 
 
      
 
.such_lnk { 
 
    font-size:16px; 
 
    color:#FF8000; 
 
    font-style:italic; 
 
    text-decoration: none; 
 
} 
 
     
 
.suche_lnk a:hover { 
 
    color:#FFFF00; 
 
    text-decoration: underline; 
 
    z-index:10; 
 
} 
 

 
#listing { 
 
    position:absolute; 
 
    left:5px; 
 
    top:35px; 
 
    width: 120%; 
 
    overflow:auto; 
 
} 
 

 
#searchbar{ 
 
    position:absolute; 
 
    left:5px; 
 
    width:90%; 
 
}
<div class="cont_ges"> 
 
    <span class="ubers">Enter</span> 
 
    <input id="searchbar" type="text" value="Search.." onClick="this.value='';" onKeyup="search();"> 
 
    <div id="listing"></div> 
 
</div>

0

更浓缩工作,你已经错过了在链路的clossing标签和数据需要显示的链接

if(pos!=-1) { 
    list= list + '<a class="search_lnk" href="' + terms[i]['des'] + '">'+terms[i]['des']+'</a>' + '<br>'; } 
    pos=-1; 
}