you know, my xml-based solution can be used in any level correlation<script language="javascript"> var aListValue = new Array(2); aListValue["a"] = new Array("1","2"); aListValue["b"] = new Array("3");var nCurIndex = null;function setupList() { if (nCurIndex != document.frmtest.name1.selectedIndex) { nCurIndex = document.frmtest.name1.selectedIndex;
var sValue = document.frmtest.name1.options[nCurIndex].value; var i; //remove existing list for (i=document.frmtest.name2.options.length-1; i >=0 ; i--) document.frmtest.name2.options.remove(i); for (i=0; i < aListValue[sValue].length;i++) { var opt = new Option(aListValue[sValue][i],aListValue[sValue][i]); document.frmtest.name2.options.add(opt); } }} </script><body onload="setupList()"> <form name="frmtest" action="" method="post"> List1: <select name="name1" onchange="setupList()"> <option value="a">a</option> <option value="b">b</option> </select><br> List2: <select name="name2"> </select><br> </form> </body>
{
if(下拉框1.GetCurSel() == a)
{
下拉框2.ResetContext();
下拉框2.Add(1);
下拉框2.Add(2);
}
else if(下拉框1.GetCurSel() == b)
{
下拉框2.ResetContext();
下拉框2.Add(3);
}
}On下拉框1SelChange()
{
...
}
var xmlID = "xmlcmbtree";
var cmbPrefix = "xmlcmb";
var nMaxLevel = 3;
var tblName = "tbl";
function CreateList(nLevel)
{
var doc = document.all(xmlID).documentElement; var nodes, nIndex, node;
nodes = doc.childNodes;
for (var i=1; i < nLevel;i++)
{
nIndex = document.all(cmbPrefix + i).selectedIndex;
node = nodes[nIndex];
nodes = node.childNodes;
} var cmb = document.all(cmbPrefix + nLevel);
if (!cmb)
{
cmb = document.createElement("SELECT");
cmb.id = cmbPrefix + nLevel;
cmb.onchange = new Function("ChangeSelection(" + nLevel + ")"); //document.body.appendChild(cmb);
var cell = document.all(tblName).rows[1].insertCell();
cell.appendChild(cmb);
cell = document.all(tblName).rows[0].insertCell(); var label = document.createElement("SPAN");
label.style.fontWeight = "bold";
label.style.color = "red";
label.innerHTML = nodes[0].nodeName + ":"; cell.appendChild(label); // document.body.insertBefore(label,cmb) } cmb.options.length = 0; for (i=0; i < nodes.length;i++)
{
var opt = new Option(nodes[i].getAttribute("text"),nodes[i].getAttribute("value"));
cmb.options.add(opt);
} ChangeSelection(nLevel);
}function ChangeSelection(nLevel)
{
if (nLevel < nMaxLevel)
CreateList(nLevel+1);
}</script>
<body onload="CreateList(1);">
<xml id="xmlcmbtree">
<country>
<province text="Jiang Su" value="Jiang Su">
<city text="Nan Jing" value="Nan Jing">
<street text="Xin Jie Kou" value="Xin Jie Kou" />
<street text="Dong Jia Xiang" value="Dong Jia Xiang" />
</city>
<city text="Su Zhou" value="Su Zhou">
<street text="Guan Qian Jie" value="Guan Qian Jie" />
<street text="Re Min Lu" value="Re Min Lu" />
</city>
</province>
<province text="Beijing" value="Beijing">
<city text="Beijing" value="Beijing">
<street text="Xin Jie Kou" value="Xin Jie Kou" />
<street text="Si Huan Lu" value="Si Huan Lu" />
<street text="Xue Yuan Lu" value="Xue Yuan Lu" />
</city>
</province>
<province text="Hei Bei" value="Hei Bei">
<city text="Shi Jia Zhuang" value="Shi Jia Zhuang">
<street text="Ren Min Lu" value="Ren Min Lu" />
</city>
</province>
</country>
</xml>
<table id="tbl" border="1" cellspacing="0" cellpadding="0"">
<tr></tr>
<tr></tr>
</table>
</body>
你写的代码我怎么看不懂?麻烦你根据我下面的代码写一下好吗? <form method="POST" name="form" action="sample.asp">
<p><select size="1" name="name1">
<option value="a">a</option>
<option value="b">b</option>
</select><select size="1" name="name2" >
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select></p>
<p><input type="submit" value="提交" name="B1"><input type="reset" value="全部重写" name="B2"></p>
</form>to:karma(无为)能否就用javascript解决?
var aListValue = new Array(2);
aListValue["a"] = new Array("1","2");
aListValue["b"] = new Array("3");var nCurIndex = null;function setupList()
{
if (nCurIndex != document.frmtest.name1.selectedIndex)
{
nCurIndex = document.frmtest.name1.selectedIndex;
var sValue = document.frmtest.name1.options[nCurIndex].value; var i;
//remove existing list
for (i=document.frmtest.name2.options.length-1; i >=0 ; i--)
document.frmtest.name2.options.remove(i); for (i=0; i < aListValue[sValue].length;i++)
{
var opt = new Option(aListValue[sValue][i],aListValue[sValue][i]);
document.frmtest.name2.options.add(opt);
} }}
</script><body onload="setupList()">
<form name="frmtest" action="" method="post">
List1: <select name="name1" onchange="setupList()">
<option value="a">a</option>
<option value="b">b</option>
</select><br>
List2:
<select name="name2">
</select><br>
</form>
</body>
http://joy.zhgnet.com/bihu/bbs/viewthread.php?tid=603