小弟想用Javascript控制读到本地的xml文件,还请大家给点参考资料和意见 谢谢 (详情见内)

uheart 2005-01-02 01:27:44
小弟现在参与的一个项目是和旅游有关的(Asp.net C#),其中有好几个联动菜单,最少的三级,最多的5级还多,而且菜单的数据量很大,最少的情况是世界大部分的国家,省/洲 还有城市 多的话后面还有景点 饭店 机场等等,所以我想这种联动情况把数据读到客户端来再用Javascript处理比较好(不放在服务器端处理联动).于是就想把数据以xml的形式读到客户端到用JavaScript处理.

原来有一个三级联动的菜单(国家 省/洲 城市),不过其中的大量数据都是放在JavaScript文件中,维护不方便是其一,只支持三级联动让我很不爽,我想把这些数据写到数据库中,然后写一个专门生成指定联动菜单的程序出来(想几级联动就几级MD),然后生成xml文件.而且每次数据库中有更新就重新生成一次这个xml文件,客户端下载这个xml文件再用Javascript处理 这样会好些. 这个工具如果写出来我就发布,让大家也爽爽 呵呵 所以在这里还请大家给点参考资料和意见 谢谢
...全文
207 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
uheart 2005-01-11
  • 打赏
  • 举报
回复
up
uheart 2005-01-03
  • 打赏
  • 举报
回复
楼上的几位代码我都有 我想还是生成xml再用javascript处理起来比较方便,我的联动至少是三级 而且以后级数和内容还不定.如果写在数据库里再导出成xml就好了
uheart 2005-01-03
  • 打赏
  • 举报
回复
up
chenjf2k 2005-01-03
  • 打赏
  • 举报
回复
---script/area.js---------------------------
function Dsy() { this.Items = {}; }
Dsy.prototype.add = function(id,iArray) { this.Items[id] = iArray; }
Dsy.prototype.Exists = function(id) { if(typeof(this.Items[id]) == "undefined") return false; return true; };
function change(v){
var str="0";
for(i=0;i<v;i++){ str+=("_"+(document.getElementById(s[i]).selectedIndex-1));};
var ss=document.getElementById(s[v]);
with(ss){
length = 0;
options[0]=new Option(opt0[v],opt0[v]);
if(v && document.getElementById(s[v-1]).selectedIndex>0 || !v)
{
if(dsy.Exists(str)){
ar = dsy.Items[str];
for(i=0;i<ar.length;i++)options[length]=new Option(ar[i],ar[i]);
if(v)options[1].selected = true;
}
}
if(++v<s.length){change(v);}
}
}
var dsy = new Dsy();
dsy.add("0",["安徽省","北京市","福建省","甘肃省","广东省","广西壮族自治区","贵州省","海南省","河北省","河南省","黑龙江省","湖北省","湖南省","吉林省","江苏省","江西省","解放军","辽宁省","内蒙古自治区","宁夏回族自治区","青海省","山东省","山西省","陕西省","上海市","四川省","台湾省","天津市","西藏自治区","新疆维吾尔自治区","云南省","浙江省"]); dsy.add("0_0_0",["枞阳县","大观区","怀宁县","郊区","潜山县","市辖区","宿松县","太湖县","桐城县","望江县","迎江区","岳西县"]); dsy.add("0_0_1",["东市区","固镇县","怀远县","郊区","市辖区","五河县","西市区","中市区"]); dsy.add("0_0_2",["巢湖市","含山县","和县","庐江县","无为县"]); dsy.add("0_0_3",["东至县","贵池市","青阳县","石台县"]); dsy.add("0_0_4",["定远县","凤阳县","嘉山县","来安县","琅琊区","南谯区","全椒县","市辖区","天长县"]); dsy.add("0_0_5",["亳州市","阜南县","阜阳市","界首市","利辛县","临泉县","蒙城县","太和县","涡阳县","颍上县"]); dsy.add("0_0_6",["长丰县","东市区","肥东县","肥西县","郊区","市辖区","西市区","中市区"]); dsy.add("0_0_7",["杜集区","烈山区","市辖区","濉溪县","相山区"]); dsy.add("0_0_8",["八公山区","大通区","凤台县","潘集区","市辖区","田家庵区","谢家集区"]); dsy.add("0_0_9",["黄山区","徽州区","祁门县","市辖区","屯溪区","歙县","休宁县","黟县"]); dsy.add("0_0_10",["霍丘县","霍山县","金寨县","六安市","寿县","舒城县"]); dsy.add("0_0_11",["当涂县","花山区","金家庄区","市辖区","向山区","雨山区"]); dsy.add("0_0_12",["砀山县","灵璧县","泗县","宿州市","萧县"]); dsy.add("0_0_13",["郊区","狮子山区","市辖区","铜官山区","铜陵县"]); dsy.add("0_0_14",["繁昌县","镜湖区","鸠江区","马塘区","南陵县","市辖区","芜湖县","新芜区"]); dsy.add("0_0_15",["广德县","绩溪县","泾县","旌德县","郎溪县","宁国县","宣州市"]); dsy.add("0_0",["安庆市","蚌埠市","巢湖地区","池州地区","滁州市","阜阳地区","合肥市","淮北市","淮南市","黄山市","六安地区","马鞍山市","宿县地区","铜陵市","芜湖市","宣城地区"]); dsy.add("0_1_0",["朝阳区","崇文区","东城区","房山区","丰台区","海淀区","门头沟区","石景山区","西城区","宣武区"]); dsy.add("0_1_1",["昌平县","大兴县","怀柔县","密云县","平谷县","顺义县","通县","延庆县"]); dsy.add("0_1",["市辖区","市辖县"]); dsy.add("0_2_0",["仓山区","长乐县","福清市","鼓楼区","郊区","连江县","罗源县","马尾区","闽侯县","闽清县","平潭县","市辖区","台江区","永泰县"]); dsy.add("0_2_1",["长汀县","连城县","龙岩市","上杭县","武平县","永定县","漳平市"]); dsy.add("0_2_2",["光泽县","建瓯市","建阳县","南平市","浦城县","邵武市","顺昌县","松溪县","武夷山市","政和县"]); dsy.add("0_2_3",["福安市","福鼎县","古田县","宁德市","屏南县","寿宁县","霞浦县","柘荣县","周宁县"]);
chenjf2k 2005-01-03
  • 打赏
  • 举报
回复
---------------index.htm------------------------
<html>
<head>
<title> 省市县关联菜单 </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="Generator" content="EditPlus">
<meta name="Author" content="fason,阿信,蒲佛信">
<meta name="Keywords" content="下拉菜单,关联,多级,fason,阿信,蒲佛信">
<meta name="Description" content="此程序为简单的省市县关联下拉菜单,有问题请往fason_pfx@hotmail.com发信">
<style>
body,select
{
font-size:9pt;
font-family:Verdana;
}
select {background-color:#F0F0F0;}
</style>
<script language="JavaScript" src="script/area.js"></script>
<SCRIPT LANGUAGE = JavaScript>
<!--
//** Power by Fason(2004-3-11)
//** Email:fason_pfx@hotmail.com

var s=["s1","s2","s3"];
var opt0 = ["省份","地级市","市、县级市、县"];
function setup()
{
for(i=0;i<s.length-1;i++)
document.getElementById(s[i]).onchange=new Function("change("+(i+1)+")");
change(0);
}
//-->
</SCRIPT>
</head>
<body bgcolor="#E0E0E0" onload="setup()">
多级关联菜单:
<form name="frm">
<select id="s1"></select>
<select id="s2"></select>
<select id="s3"></select>
</form>

</body>
</html>
chenjf2k 2005-01-03
  • 打赏
  • 举报
回复
我有个脚本,不过不是xml的,要不要

http://www.eipcn.net
chenjf2k 2005-01-03
  • 打赏
  • 举报
回复
请访问http://www.eipcn.net,希望能有合作的机会
谢谢!
chenjf2k 2005-01-03
  • 打赏
  • 举报
回复
我的早期作品,希望对你有帮助!


default.htm
-------------------------------------------------------------------
<html>
<head>
<title>用XML实现无限级的(国家)省、市、区、县的动态关联</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link rel="stylesheet" href="Common/style.css">
<script language=javascript>
//________________________________________________________________
//****************************************************************
// ╭═══════════════════════════════╮
// ║ 模块名称:用XML实现无限级的(国家)省、市、区、县的动态关联 ║
// ║ 作  者:发仔                       ║
// ║ 电子邮件:chenjf2k@163.com ║
// ║ 演示地址:http://www.971411.com/test/default.htm ║
// ╰═══════════════════════════════╯
//****************************************************************

var oOrgData;
var orgID="";
var nodeParentOrg;
var nodesEqualOrg;
var nodesChildOrg;
function window.onload(){
oOrgData = OrgData.XMLDocument.documentElement;
var newOrgID = ""
if (newOrgID!=""){
orgID = newOrgID;
}
else{
if (oOrgData.childNodes.length>0){
orgID = oOrgData.childNodes.item(0).getAttribute("编号");
}
}
gotoOrg();
}
function gotoOrg(){
checkBtnAble();
showOrgList();
showPage();
}
function GoToParentOrgID(){
orgID = nodeParentOrg.getAttribute("编号")
gotoOrg();}
function GoToChildOrgID(){
orgID = nodesChildOrg.item(0).getAttribute("编号")
gotoOrg();
}

function showOrgList(){
removeItem();
var oOption;
for(num=0;num<nodesEqualOrg.length;num++){
oOption = document.createElement("OPTION");
oOption.text=" "+nodesEqualOrg.item(num).getAttribute("名称");
oOption.value=nodesEqualOrg.item(num).getAttribute("编号");
if(oOption.value==orgID) oOption.selected=true;
orgList.add(oOption);
}
}
function showPage(){
if (orgList.options.length>0){
orgID = orgList.options[orgList.selectedIndex].value;
// window.top.mainFrame.location.href='main.asp?orgID='+orgID;
checkBtnAble();
}
else{
// window.top.mainFrame.location.href='main.asp';
}
}
function removeItem(){
if (orgList.options.length>0){
for (i = orgList.options.length - 1; i >= 0; --i){
orgList.remove(i);
}
}
}
function checkBtnAble(){
var parentOrgID;
if(orgID.length==3){
parentOrgID="000";
}
else{
parentOrgID=orgID.substring(0,orgID.length-3)
}
nodeParentOrg = oOrgData.selectSingleNode("机构[@编号='"+parentOrgID+"']")
if (nodeParentOrg==null){
btnParentOrgID.disabled=true;
}
else{
btnParentOrgID.disabled=false;
}
nodesEqualOrg = oOrgData.selectNodes("机构[@上级编号='"+parentOrgID+"']")
nodesChildOrg = oOrgData.selectNodes("机构[@上级编号='"+orgID+"']")
if (nodesChildOrg.length==0){
document.all.btnChildOrgID.disabled=true;
}
else{
document.all.btnChildOrgID.disabled=false;
}
}
</script>
<style>
input {HEIGHT: 20px;border: 2px outset; background-color: #005D99; border-color: #FFFFFF; font-size: 10pt;color: #FFFFFF}
select {HEIGHT: 20px; background-color: #E6F7EE; font-size: 10pt;color: #000000}
td {font-size:10pt}
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000" marginheight="0" topmargin="6">
<xml id="OrgData" src="Orglist.xml"></xml>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="005D99" height="30"><font color="#FFFFFF"> 当前操作单位:</font>
<input type="button" value="<<" onClick="GoToParentOrgID()" id="btnParentOrgID" title="返回上一级管理" disabled>
<select id="orgList" style="WIDTH: 475px;" title="请选择当前操作单位" onChange="javascript:showPage()">
</select>
<input type="button" value=">>" onClick="GoToChildOrgID()" id="btnChildOrgID" title="进入下一级管理" disabled>
</td>
</tr>
</table>
</body>
</html>


OrgList.xml [以下只简单列举几个单位]
--------------------------------------------------------------
<?xml version="1.0" encoding="gb2312"?>

<机构列表>
<机构 编号="001" 名称="福建省" 上级编号="000"/>
<机构 编号="001001" 名称="福建省->省机关" 上级编号="001"/>
<机构 编号="001001016" 名称="福建省->省机关->办公室" 上级编号="001001"/>
<机构 编号="001001017" 名称="福建省->省机关->科研所" 上级编号="001001"/>
<机构 编号="001001018" 名称="福建省->省机关->信息处" 上级编号="001001"/>
<机构 编号="001002" 名称="福建省->福州市" 上级编号="001"/>
<机构 编号="001002021" 名称="福建省->福州市->局机关" 上级编号="001002"/>
<机构 编号="001002021001" 名称="福建省->福州市->局机关->局领导" 上级编号="001002021"/>
<机构 编号="001002021002" 名称="福建省->福州市->局机关->办公室" 上级编号="001002021"/>
<机构 编号="001002021003" 名称="福建省->福州市->局机关->计财室" 上级编号="001002021"/>
<机构 编号="001002005" 名称="福建省->福州市->仓山区" 上级编号="001002"/>
<机构 编号="001002006" 名称="福建省->福州市->鼓楼区" 上级编号="001002"/>
<机构 编号="001002001" 名称="福建省->福州市->台江区" 上级编号="001002"/>
<机构 编号="001002004" 名称="福建省->福州市->晋安区" 上级编号="001002"/>
<机构 编号="001002010" 名称="福建省->福州市->闽侯县" 上级编号="001002"/>
<机构 编号="001002015" 名称="福建省->福州市->开发区" 上级编号="001002"/>
<机构 编号="001002012" 名称="福建省->福州市->闽清县" 上级编号="001002"/>
<机构 编号="001002011" 名称="福建省->福州市->永泰县" 上级编号="001002"/>
<机构 编号="001002007" 名称="福建省->福州市->长乐市" 上级编号="001002"/>
<机构 编号="001002018" 名称="福建省->福州市->连江县" 上级编号="001002"/>
<机构 编号="001002017" 名称="福建省->福州市->福清市" 上级编号="001002"/>
<机构 编号="001002016" 名称="福建省->福州市->平潭县" 上级编号="001002"/>
<机构 编号="001002008" 名称="福建省->福州市->罗源县" 上级编号="001002"/>
<机构 编号="001002020" 名称="福建省->福州市->琅岐分局" 上级编号="001002"/>
<机构 编号="001003" 名称="福建省->厦门市" 上级编号="001"/>
<机构 编号="001003015" 名称="福建省->厦门市->市局机关" 上级编号="001003"/>
<机构 编号="001003012" 名称="福建省->厦门市->直征局" 上级编号="001003"/>
<机构 编号="001003013" 名称="福建省->厦门市->外税分局" 上级编号="001003"/>
<机构 编号="001003014" 名称="福建省->厦门市->稽查分局" 上级编号="001003"/>
<机构 编号="001003016" 名称="福建省->厦门市->信息技术分局" 上级编号="001003"/>
<机构 编号="001003002" 名称="福建省->厦门市->开元区局" 上级编号="001003"/>
<机构 编号="001003003" 名称="福建省->厦门市->思明区局" 上级编号="001003"/>
<机构 编号="001003006" 名称="福建省->厦门市->湖里区局" 上级编号="001003"/>
<机构 编号="001003007" 名称="福建省->厦门市->集美区局" 上级编号="001003"/>
<机构 编号="001003008" 名称="福建省->厦门市->杏林区局" 上级编号="001003"/>
<机构 编号="001003009" 名称="福建省->厦门市->海沧投资区局" 上级编号="001003"/>
<机构 编号="001003011" 名称="福建省->厦门市->同安区局" 上级编号="001003"/>
<机构 编号="001003004" 名称="福建省->厦门市->鼓浪屿区局" 上级编号="001003"/>
<机构 编号="001003017" 名称="福建省->厦门市->税务学会" 上级编号="001003"/>
</机构列表>

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧