我们的项目里,比如表单难证,拿现在的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);
}是不是很复杂啊?
比如放一段联动的代码
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);
}是不是很复杂啊?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货