我们的项目里,比如表单难证,拿现在的JS文件导入进去就OK了,还要象地区联动的,也是一样,我也想搞懂,不过里面的代码实在是复杂.有必要去深究吗?
  比如放一段联动的代码
   
function sub()
{
if(!clicked.Validate($("myForm"))) {

return false;
}
var selectObj=$("context").childNodes[$("context").childNodes.length-1];
var areaId=selectObj.options[selectObj.selectedIndex].getAttribute("value");
$("areaHiddn").value=areaId;
//alert(areaId);
$("myForm").submit();
}
function $(id)
{
return document.getElementById(id);
}
function addInit(obj)
{


var option=document.createElement("option");
option.setAttribute("value","");
option.appendChild(document.createTextNode("请选择")); 
obj.appendChild(option);
// obj.options[obj.options.length] = option;

}
function init()
{
//初始化之前调用
var obj=$("area");
var selectObj=obj;
var context=$("context");
var length=context.childNodes.length-1;
for(var i=length;i>=0;i--)
{
if(context.childNodes[i]==selectObj)
break;
context.childNodes[i].removeNode(true);
}
obj.length=0;
var date=new Date();
ajax("../area/init.action?date="+date,init_callBack);
}
function init_callBack(objXML)
{
var selectObj=$("area");
addInit(selectObj);//固化
var areaArr=objXML.getElementsByTagName("area");
for(var i=0;i<areaArr.length;i++)
{
var option=document.createElement("option");
option.setAttribute("value",areaArr[i].getAttribute("id"));
option.appendChild(document.createTextNode(areaArr[i].getAttribute("name"))); 
selectObj.appendChild(option);
//alert(areaArr[i].getAttribute("name"));
}
}
function addSelect()
{
//得到selectObj
var selectObj=event.srcElement;
if(selectObj.selectedIndex==0)
{
//该节点后的div中的全部组件
var context=$("context");
var length=context.childNodes.length-1;
for(var i=length;i>=0;i--)
{
if(context.childNodes[i]==selectObj)
break;
context.childNodes[i].removeNode(true);
}
}
else
{
//通过areaID去查询下属的城市
var areaId=selectObj.options[selectObj.selectedIndex].getAttribute("value");
initNextSelectObj(areaId);
}
}

function initNextSelectObj(areaId)
{
var date=new Date();
ajax("../area/init_select_1.action?selectedIndex="+areaId+"&date="+date,initNextSelectObj_callBack);
}
function test()
{
alert(1);
}
function initNextSelectObj_callBack(objXML)
{
//判断是否增加接点
var _areaArr=objXML.getElementsByTagName("area");
if(_areaArr.length>0)
{
var selectObj_gc=event.srcElement;
var context_gc=$("context");
var length=context_gc.childNodes.length-1;
for(var i=length;i>=0;i--)
{
if(context_gc.childNodes[i]==selectObj_gc)
break;
context_gc.childNodes[i].removeNode(true);
}


var context=$('context');
var selectObj=document.createElement("select");
selectObj.onchange=addSelect;
selectObj.setAttribute("dataType","required" );
selectObj.setAttribute("cn_name","管理属地" );
var optionFirst=document.createElement("option");
optionFirst.setAttribute("value","");
optionFirst.appendChild(document.createTextNode("请选择"));
selectObj.appendChild(optionFirst);

var areaArr=objXML.getElementsByTagName("area");
for(var i=0;i<areaArr.length;i++)
{
var option=document.createElement("option");
option.setAttribute("value",areaArr[i].getAttribute("id"));
option.appendChild(document.createTextNode(areaArr[i].getAttribute("name"))); 
selectObj.appendChild(option);
}
context.appendChild(selectObj);
}
else
{
var selectObj_gc=event.srcElement;
var context_gc=$("context");
var length=context_gc.childNodes.length-1;
for(var i=length;i>=0;i--)
{
if(context_gc.childNodes[i]==selectObj_gc)
break;
context_gc.childNodes[i].removeNode(true);
}
return;
}
}
function ajax(url,method)
{
          var http_request = new ActiveXObject('Microsoft.XMLHTTP');
         // var date=new Date();
          http_request.open("get",url,"false");
          http_request.onreadystatechange = function()
          {
              if(4 == http_request.readyState) 
              {
          if(200 == http_request.status) 
          {
         
          method(http_request.responseXML);
          }
          }
          }
          http_request.setRequestHeader("If-Modifyed-Since","0");
          http_request.send(null);
    }是不是很复杂啊?