小隐的博客

人生在世,笑饮一生
随笔 - 304, 文章 - 0, 评论 - 349, 阅读 - 50万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

利用js读出xml制作地区联动下拉框

Posted on   隐客  阅读(527)  评论(1编辑  收藏  举报

 

复制代码

<script language="javascript">
function LoadXML()
{
    
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
    xmlDoc.async 
= true;(此处要注意,我在asp.net中时,需要写成false才行,难道真TMD C#比较慢的原因?)
    xmlDoc.load(
"XML\\Area.xml");
    
return xmlDoc;
    
}

function InitArea()
{
    
    
/*获取,引用三个下拉框 */
    
var dropElement1=document.getElementById("Select1"); 
    
var dropElement2=document.getElementById("Select2"); 
    
var dropElement3=document.getElementById("Select3"); 
    
/*自定义一个方法 把传进来的对象清除    这里清除了三个下拉所有框的选项*/  
    RemoveDropDownList(dropElement1);
    RemoveDropDownList(dropElement2);
    RemoveDropDownList(dropElement3);
    
    
var pOption = document.createElement("option");
    pOption.value 
= "0";
    pOption.text 
= "全国";
    dropElement1.add(pOption);
    
    
var cOption = document.createElement("option");
    cOption.value 
= "0";
    cOption.text 
= "全部市";
    dropElement2.add(cOption);
    
    
var aOption = document.createElement("option");
    aOption.value 
= "0";
    aOption.text 
= "全区县";
    dropElement3.add(aOption);
    
    
var xmlDoc= LoadXML();
    
//var provinceNodes = xmlDoc.documentElement.childNodes[1].getAttribute("name");
    /*获取全市节点*/
    
var provinceNodes = xmlDoc.documentElement.childNodes;
    
//var  TopnodeList=xmlDoc.selectSingleNode("Root").childNodes;
    //j = provinceNodes.length;
    //alert(j)
    if(provinceNodes.length > 0//provinceNodes.length = 31
    {
        
var province;
        
var city;
        
var area;
        
        
for(var i=0; i<provinceNodes.length; i++)
        {
            province 
= provinceNodes[i];
            
var pOption = document.createElement("option");
            pOption.value 
= province.getAttribute("name");
            pOption.text 
= province.getAttribute("name");
            dropElement1.add(pOption);
        }
    }
}

function selectProvince()
{
    
var dropElement1=document.getElementById("Select1"); 
    
var provinceName=dropElement1.options[dropElement1.selectedIndex].text;
    
var xmlDoc= LoadXML();
    
var provinceNode = xmlDoc.selectSingleNode("//root/province[@name='"+provinceName+"']");  //alert(provinceNode.getAttribute("name"));
    
    
/*XmlNode node = doc.SelectSingleNode("//AllNode/Node[@ID = ’aaa’]");
   在整个Xml中查找AllNode节点下的节点名为Node的节点,该子节点的ID属性值为aaa
*/
   
    
var dropElement2=document.getElementById("Select2"); 
    
var dropElement3=document.getElementById("Select3");
    
    RemoveDropDownList(dropElement2);
    RemoveDropDownList(dropElement3);
    
    
var cOption = document.createElement("option");
    cOption.value 
= "0";
    cOption.text 
= "全部市";
    dropElement2.add(cOption);
    
    
var aOption = document.createElement("option");
    aOption.value 
= "0";
    aOption.text 
= "全区县";
    dropElement3.add(aOption);
    
    
if (provinceNode==null)
    {
        
return;
    }
    
for(var i=0; i<provinceNode.childNodes.length; i++)
        {
            city 
= provinceNode.childNodes[i];
            
var cOption = document.createElement("option");
            cOption.value 
= city.getAttribute("name");
            cOption.text 
= city.getAttribute("name");
            dropElement2.add(cOption);
        }


}

function selectArea()
{
    
var dropElement2=document.getElementById("Select2"); 
    
var cityName=dropElement2.options[dropElement2.selectedIndex].text;
    
var xmlDoc= LoadXML();
    
var cityNode = xmlDoc.selectSingleNode("//root/province/city[@name='"+cityName+"']");
    
    
var dropElement3=document.getElementById("Select3");
    RemoveDropDownList(dropElement3);
    
var aOption = document.createElement("option");
    aOption.value 
= "0";
    aOption.text 
= "全区县";
    dropElement3.add(aOption);
    
if (cityNode==null)
    {
        
return;
    }    
    
for(var i=0; i<cityNode.childNodes.length; i++)
        {
            city 
= cityNode.childNodes[i];
            
var aOption = document.createElement("option");
            aOption.value 
= city.getAttribute("name");
            aOption.text 
= city.getAttribute("name");
            dropElement3.add(aOption);
        }
}

function RemoveDropDownList(obj)
{
    
if(obj)//如果参数obj不为空 则
    {
        
var length=obj.options.length;
        
if(length > 0)
        {
            
for(var i=length; i>=0;i--)
            {
                obj.remove(i);
            }
        }
    }
}
window.onload
=InitArea;
</script>
复制代码

 

 

 

 

/Files/szyicol/searchArea.rar

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
QQ交流
点击右上角即可分享
微信分享提示