//
attachSelect - Version 1.2.060711
// Copyright(C) 2006 Forbes Pu. All rights reserved.
// License : http://creativecommons.org/licenses/LGPL/2.1/
function attachSelect(strInitID, arrSelect, arrMatrix, arrDefValue) ... {
function doChange(iIndex) ...{
var iCount = 0;
var sParentID = strInitID;
if (iIndex > 0) sParentID = arrSelect[iIndex - 1].options[arrSelect[iIndex - 1].selectedIndex].ID;
with (arrSelect[iIndex]) ...{
length = 0;
for (var i = 0; i < arrMatrix.length; i++) ...{
if (String(arrMatrix[i][1]) == String(sParentID)) ...{
var oNewOption = new Option(arrMatrix[i][2], arrMatrix[i][3], false, arrMatrix[i][3] == arrDefValue[iIndex] || iCount == 0);
oNewOption.ID = arrMatrix[i][0];
options[iCount++] = oNewOption;
};
};
if (iCount == 0) ...{
var oNull = new Option("--", null, false, true);
oNull.ID = "_0x" + (new Date()).getTime();
options[0] = oNull;
};
if (++iIndex < arrSelect.length) doChange(iIndex);
};
};
if (!arrDefValue) arrDefValue = [];
for (var i = 0; i < arrSelect.length - 1; i++) ...{
eval("arrSelect[" + i + "].onchange = function(){ doChange(" + (i + 1) + "); };");
}
doChange(0);
arrDefValue = [];
} ;
// Copyright(C) 2006 Forbes Pu. All rights reserved.
// License : http://creativecommons.org/licenses/LGPL/2.1/
function attachSelect(strInitID, arrSelect, arrMatrix, arrDefValue) ... {
function doChange(iIndex) ...{
var iCount = 0;
var sParentID = strInitID;
if (iIndex > 0) sParentID = arrSelect[iIndex - 1].options[arrSelect[iIndex - 1].selectedIndex].ID;
with (arrSelect[iIndex]) ...{
length = 0;
for (var i = 0; i < arrMatrix.length; i++) ...{
if (String(arrMatrix[i][1]) == String(sParentID)) ...{
var oNewOption = new Option(arrMatrix[i][2], arrMatrix[i][3], false, arrMatrix[i][3] == arrDefValue[iIndex] || iCount == 0);
oNewOption.ID = arrMatrix[i][0];
options[iCount++] = oNewOption;
};
};
if (iCount == 0) ...{
var oNull = new Option("--", null, false, true);
oNull.ID = "_0x" + (new Date()).getTime();
options[0] = oNull;
};
if (++iIndex < arrSelect.length) doChange(iIndex);
};
};
if (!arrDefValue) arrDefValue = [];
for (var i = 0; i < arrSelect.length - 1; i++) ...{
eval("arrSelect[" + i + "].onchange = function(){ doChange(" + (i + 1) + "); };");
}
doChange(0);
arrDefValue = [];
} ;
代码十分简单,就是一个函数
strInit是初始化的顶级的ID(一般为0)(必选)
arrSelect是下拉菜单的对象数组(可选)
arrMatrix是一个数据数组,结构是[ID,ParentID,Text,Value].(必选)
arrDefValue是默认值数组(可选)
脚本最新版本发布在http://www.webpfx.com, 请大家访问下载最新版本