Home  >  Article  >  Backend Development  >  XML Volume Practical Tips (4): Menu Linkage

XML Volume Practical Tips (4): Menu Linkage

黄舟
黄舟Original
2017-02-10 16:18:331483browse

Motivation:
Now let's do a small example of applying XML in IE: solving the linkage problem of double drop-down menus. Perhaps the most common example is to select a province and then change the city options, so let's try to use XML to complete it.

I have implemented some of the functions introduced before directly using XML+XSL files. You may not be very familiar with its usage, so I will use HMTL+XML this time, hoping to make everyone more familiar with it. Clear understanding - "XML can be so simple!":)


Materials:
XML Volume Select Menu Linkage
There are 2 files: Citys.xml and CitySelect.htm

Function:
After selecting a province, the corresponding city can be automatically displayed, which is convenient for users, effectively improves data interaction, and makes your page more colorful.
Effect:
Browse here
Code:

Citys.xml 
<?xml version="1.0" encoding="gb2312"?>
<China>
  <State id="1" name="江西">
    <City>九江</City>
    <City>南昌</City>
    <City>庐山</City>
    <City>景德镇</City>
  </State>
  <State id="2" name="北京">
    <City>北京西</City>
    <City>居庸关</City>
    <City>清华园</City>
    <City>周口店</City>
  </State>
  <State id="3" name="福建">
    <City>福州</City>
    <City>厦门</City>
    <City>漳州</City>
  </State>
  <State id="4" name="甘肃">
    <City>兰州</City>
    <City>洛门</City>
    <City>嘉峪关</City>
  </State>
  <State id="5" name="广东">
    <City>广州</City>
    <City>深圳</City>
    <City>东莞</City>
    <City>石牌</City>
  </State>
  <State id="6" name="安徽">
    <City>合肥</City>
    <City>黄山</City>
    <City>九龙岗</City>
    <City>马鞍山</City>
  </State>
</China>

CitySelect.htm

Custom function: ChooseState
(Read the province in XML data name and added to SelState's drop-down list)

function ChooseState()
{
  var source;
  var sourceName = "Citys.xml";
  var source = new ActiveXObject(&#39;Microsoft.XMLDOM&#39;);   //创建一个 MSXML解析器实例
  source.async = false;
  source.load(sourceName);   //装入XML文档
  root = source.documentElement;   //设置文档元素为根节点元素
  sortField=root.selectNodes("//@name");   //搜索属性中含有name的所有节点
  for(var i=0;i<sortField.length;++i)   //增加省份名称到下拉列表
  {
    var oOption = document.createElement(&#39;OPTION&#39;);
    oOption.text = " "+sortField[i].text+" ";
    oOption.value = sortField[i].text;
     form1.SelState.options.add(oOption); 
  }
   ChooseCity();
}

Custom function: ChooseCity
(Read the corresponding city in the XML data based on the currently selected province name name and added to SelCity's drop-down list)

function ChooseCity()
{
  x=form1.SelState.selectedIndex;   //读取省份下拉框的当前选项
  y=form1.SelState.options[x].value;
  sortField=root.selectNodes("//State[@name=&#39;"+y+"&#39;]/City&q uot;);   //搜索name属性值等于
参数y的State节点下的所有city节点
  for(var i=form1.SelCity.options.length-1;i>=0;--i)   //撤消原来的列表项
  {
    form1.SelCity.options.remove(i)
  }
  for(var i=0;i<sortField.length;++i)   //增加城市名称到下拉列表
  {
    var oOption = document.createElement(&#39;OPTION&#39;);
    oOption.text = " "+sortField[i].text+" ";
    oOption.value = sortField[i].text;
    form1.SelCity.options.add(oOption); 
  }
}


Form source code

<BODY onLoad="ChooseState()">
<FORM action="" method="post" id="form1" name="form1">
<SELECT name="SelState" id="SelState" onchange="ChooseCity()" >
</SELECT>
<SELECT name="SelCity" id="SelCity" >
</SELECT>
</FORM>
</BODY>

Postscript:
Just started learning When it comes to XML, I also have the same confusion as everyone else - "I have learned XML, but how should I use this XML?" This problem has hindered me for a long, long time...

Because e-commerce and software development are my expertise, I thought it would be better to start with what I am most familiar with. So I implemented some of the most commonly used functions in website construction in XML. You can do it too!
The above is the practical tips for XML volume (4): menu linkage content. For more related content, please pay attention to the PHP Chinese website (www.php.cn)!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn