将选择选项列表转到resumeir ul列表

时间:2011-07-24 10:35:10

标签: javascript html xml

我有一个脚本,允许使用Javascript检索Google建议(XML)并以纯HTML格式输出:

<input  id='inp' /> <select  id='sug' />

<script type='text/javascript'>

function el(tid) {return document.getElementById(tid);}

function addScript(u){ 
   var head=document.getElementsByTagName('head')[0],
     sc2=document.createElement('script'); sc2.src=u;    
   head.appendChild(sc2);
   setTimeout(function(){ head.removeChild(sc2); sc2=null;}, 20000)
 }//end addScript()


function suggest(data){ 
  var sel=el("sug").options; sel.length=0;
  data[1].map(function(a){return a[0];}).map(function(a,b){
  sel[b]=new Option(a);
 });
 sel.size=data[1].length;
}//end suggeest()


el("inp").onkeyup=function(){
  addScript("http://www.google.nl/complete/search?callback=suggest&q="+this.value);
}

正如您所见,XML数据现在是一个选择选项列表。我的问题:如何在ul ---&gt; li HTML而不是select选项列表中获取此信息。

1 个答案:

答案 0 :(得分:1)

AFAIK没有标准的DOM对象来表示ul / li所以你的“OO”方式不起作用......但是,以下似乎可以在我的FireFox浏览器中运行:在html正文中有一个像<的列表/ p>

<ul id='test'>
  <li>test</li>
</ul>

并在JavaScript中将suggest函数替换为此

function suggest(data){ 
  var sel=el("test"); sel.innerHTML='';
  data[1].map(function(a){return a[0];}).map(function(a,b){
  sel.innerHTML += '<li>'+a+'</li>';
 });
}

BTW在select元素之前添加列表或将其写为

<select  id='sug'></select>
<ul id='test'>
  <li>test</li>
</ul>

(即select使用正确的结束标记写入)否则列表将不会显示在页面

修改 似乎在IE中工作的版本

function suggest(data){ 
  var sel=el("test"); sel.innerHTML='';
  for(x=0; x<data[1].length;x++){
     sel.innerHTML += '<li>'+data[1][x][0]+'</li>';
  }
}