日期:2014-05-18  浏览次数:20468 次

XPath中文问题
代码区一 
var drp2 = document.getElementById("ctl00$content$city"); //使用了母版,获取一个DropDownList对象 
for(var i = 0;i <=drp2.options.length -1;i++){  
  drp2.remove(i);//删除该DropDownList的所有options 



代码区二 

var result=" <NewDataSet> <Table> <city>潮洲 </city> </Table> <Table> <city>北京 </city> </Table> <Table> <city>上海 </city> </Table> </NewDataSet>"; 
oDoc.loadXML(result); 
  items = oDoc.selectNodes("//NewDataSet/Table"); 
  for (var item = items.nextNode(); item; item = items.nextNode()){  
  var node = item.selectSingleNode("//city"); 
  var city = node.nodeTypedValue; 
  var newOption = document.createElement("OPTION");  
  newOption.text = city;  
  newOption.value = city;  
  drp2.options.add(newOption);  
  }  


观看以上代码,两代码区都在同一个文件中 
问题一:我的DropDownList ctl00$content$city的值为三个潮州而不是潮州、北京、上海,为什么? 
问题二:当result的值改动之后(页面没有刷新),例如第二层改为 <Table> <city>广东 </city> </Table> <Table> <city>青岛 </city> </Table>我的DropDownList ctl00$content$city并没有像预期的那样删掉之前的三个潮州再加上广东和青岛,而是三个潮州再加两个广东,为什么?

------解决方案--------------------
确实你楼主xpath 问题
参考修改

JScript code


var result=" <NewDataSet> <Table> <city>潮洲 </city> </Table> <Table> <city>北京 </city> </Table> <Table> <city>上海 </city> </Table> </NewDataSet>"; 
    oDoc=createDocument();
    
    oDoc.loadXML(result); 
                items  =  oDoc.selectNodes("//NewDataSet/Table"); 
                for  (var  item  =  items.nextNode();  item;  item  =  items.nextNode()){  
          var  node  =  item.selectSingleNode[color=#FF0000]("city"[/color]); 
          var city = node.nodeTypedValue; 
          var  newOption  =  document.createElement("OPTION");  
            alert(city);

------解决方案--------------------
var node = item.selectSingleNode("//city"); 

修改为

var node = item.selectSingleNode("city");
即可.
 

------解决方案--------------------
for(var i = 0;i <=drp2.options.length -1;i++){
drp2.remove(i);//删除该DropDownList的所有options 
}

可以简化为
drp2.innerHTML ="";

第二,建议你用 alert 调试一下 items.nextNode(); 取到的是什么值
另,代码可优化为
for (var i = 0; i<items.childNodes.length; i++)
{
var city = items[i]["city"].innerText; 
drp2.options.add(new Option(city,city));
}