魚躍于淵

          First know how, Second know why !
          posts - 0, comments - 1, trackbacks - 0, articles - 49

          用ajax 仿百度谷歌搜索的下拉提示

          Posted on 2008-09-25 17:44 魚躍于淵 閱讀(664) 評論(0)  編輯  收藏 所屬分類: javascript相關
          在用到實例中時 : 可把關鍵字定時從數據庫中取出來生成到一個XML文件中,  這樣能提高效率, 也便于AJAX取得數據.
          這里只是提供一個思路和一個小小的實現 .

          ajax09.html

          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title>Insert title here</title>

          <style type="text/css">
              .suggestions 
          {
              background-color
          : #FFF;
              padding
          : 2px 6px;
              border
          : 1px solid #000;
              width 
          : 60px ;
              
          }

              
              .suggestions:hover 
          {
                  background-color
          : #69F;
              
          }

              #searchField.error 
          {
              background-color
          : #FFC;
              
          }

          </style>

          <script type="text/javascript">
              
              
          var xhr = false ;
              
          var statesArray = new Array() ;

              window.onload 
          = initAll ;
              
              
          function initAll() {
                  
          //alert(document.getElementById("popups").innerHTML) ;
                  //document.getElementById("popups").onmouseover = test ;
                  setArray() ;
                  initArray() ;
                  document.getElementById(
          "searchField").onkeyup = searchSuggest ;
                  document.getElementById(
          "searchField").onblur = hideDiv ;
              }

              
              
          function test(evt){
                  
          var thisDiv = evt ? evt.target : window.event.srcElement ;
                  thisDiv.innerHTML 
          = "haha" ;
                  document.getElementById(
          "popups").appendChild(thisDiv) ;
              }

              
              
          function initArray(){
                  statesArray[
          0= "china" ;
                  statesArray[
          1= "jappan" ;
                  statesArray[
          2= "USA" ;
                  statesArray[
          3= "UK" ;
                  statesArray[
          4= "chinabbc" ;
                  statesArray[
          5= "UKYSB" ;
                  statesArray[
          6= "UKL" ;
                  statesArray[
          7= "chincbin" ;
              }

              
              
          function searchSuggest() {
                  
          var str = document.getElementById("searchField").value ;
                  
          //alert(str) ;
                  if(str != ""){
                      document.getElementById(
          "popups").innerHTML = "" ;
                      
          for(var i=0; i<statesArray.length; i++){
                          
          var state = statesArray[i] ;
                          
          if(state.toLowerCase().indexOf(str.toLowerCase()) == 0){
                              
          var tempDiv = document.createElement("div") ;
                              tempDiv.innerHTML 
          = state ;
                              tempDiv.className 
          = "suggestions" ;
                              tempDiv.onclick 
          = makeChoice ;
                              document.getElementById(
          "popups").appendChild(tempDiv) ;
                          }

                      }

                  }

                  
                  
          var resultcount = document.getElementById("popups").childNodes.length ;
                  
          //alert(resultcount) ;
                  if(resultcount == 0){
                      
          //alert(resultcount) ;
                      document.getElementById("searchField").className = "error" ;
                  }

                  
                  
          if(resultcount == 1){
                      
          //alert(resultcount) ;
                      document.getElementById("searchField").value = document.getElementById("popups").childNodes[0].innerHTML ;
                      document.getElementById(
          "popups").innerHTML = "" ;
                  }

              }

              
              
          function makeChoice(evt){
                  
          //alert("makeChoice !") ;
                  var thisDiv = evt ? evt.target : window.event.srcElement ;
                  
          //alert(thisDiv.innerHTML) ;
                  document.getElementById("searchField").value = thisDiv.innerHTML ;
                  document.getElementById(
          "popups").innerHTML = "" ;
              }

              
              
          function setArray(){
                  
                  
          if(window.XMLHttpRequest){
                      xhr 
          = new XMLHttpRequest() ;
                  }
          else{
                      
          if(window.ActiveXObject){
                          
          try{
                              xhr 
          = new ActiveXObject("Microsoft.XMLHttpRequest") ;
                          }
          catch(e){} 
                      }

                  }

                  
                  
          if(xhr){
                      xhr.onreadystatechange 
          = showContents ;
                      xhr.open(
          "GET""ajax09.xml"true) ;
                      xhr.send(
          null) ;
                      
                  }
          else{
                      document.getElementById(
          "preWin").innerHTML = "sorry ! but your pc coundn't create a xhr object !" ;
                  }

              }

              
              
          function showContents(){
                  
                  
          if(xhr.readyState == 4){
                      
          if(xhr.status == 200){
                          
                          
          var msg = xhr.responseXML.getElementsByTagName("item") ;
                      }
          else{
                          
          var msg = "error status = " + xhr.status ;
                      }

                      
          for(var i=0; i<msg.length; i++){
                          
          //alert(msg[i].childNodes[0].nodeValue) ;
                          statesArray[i] = msg[i].childNodes[0].nodeValue ;
                      }

                  }

              }

          </script>

          </head>
          <body>
          <center>
              please input some worlds : 
          <br />
              
          <input type="text" name="searchField" value="" size="60px" /><br />
              
          <div id="popups">ddd</div>
              
          &nbsp;&nbsp;
              
          <input type="submit" value="submit" /><br /><br />
              
          </center>
          </body>
          </html>

          ajax09.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <states>
              
          <item>china</item>
              
          <item>jappan</item>
              
          <item>USA</item>
              
          <item>UK</item>
              
          <item>chinabbc</item>
              
          <item>UKYSB</item>
              
          <item>UKL</item>
              
          <item>chincbin</item>
          </states>

          主站蜘蛛池模板: 泰州市| 赤水市| 枣庄市| 桐乡市| 宁陕县| 武平县| 曲靖市| 五原县| 翁源县| 夹江县| 曲松县| 韩城市| 玉门市| 晋宁县| 洛宁县| 明水县| 成安县| 行唐县| 陇川县| 京山县| 河间市| 玛曲县| 兴宁市| 秦皇岛市| 府谷县| 万载县| 正宁县| 高邮市| 岳普湖县| 乌拉特后旗| 若尔盖县| 永吉县| 广昌县| 龙里县| 昌黎县| 积石山| 周宁县| 余姚市| 灯塔市| 闽侯县| 潜山县|