`
小嘴看世界
  • 浏览: 130150 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

读取xml到下拉列表

    博客分类:
  • Web
阅读更多
在开发节点物流的平台时有一个下拉列表读取xml的东西,虽然后来被用其他的东西换掉了,可是还要来说一说这个小东东。
首先是根据一个下拉列表的选择:A,货源,B、车源,C、其它

货源对应goods 车源对应truck 其它为others,下面是xml文件
<?xml version="1.0" encoding="gb2312"?>
<Info>
	<goods>
		<sdtys>
			<sdty>钢铁</sdty>
			<sdty>煤炭</sdty>
			<sdty>电力</sdty>
		</sdtys>
		<uoms>
			<uom>吨</uom>
			<uom>立方米</uom>
		</uoms>
	</goods>
	<truck>
		<sdtys>
			<sdty>卡车</sdty>
			<sdty>斯太尔</sdty>
			<sdty>tank</sdty>
		</sdtys>
		<uoms>
			<uom>100/公里</uom>
			<uom>22/小时</uom>
		</uoms>
	</truck>
	<others>
		<sdtys>
			<sdty>其他信息</sdty>
		</sdtys>
		<uoms>
			<uom>个</uom>
			<uom>台</uom>
			<uom>其他</uom>
		</uoms>
	</others>
</Info>


数据读取到的下拉列表分别为 类型 和 单位,分别对应上述中sdtys和uoms

然后是html文件,如下
1.信息选择的html代码
<select id="info.tpye" name="info.tpye" onChange = "GetInfo(this.selectedIndex);">
	<option></option>
	<option value="A">货源信息</option>
	<option value="B">车源信息</option>
	<option value="C">其它信息</option>
</select>

2.填入的html代码
<td>类型</td>
<td>
	<select name="info.sdty" id="info.sdty" style="width:120px;">
	</select>
</td>
<td>单位</td>
<td>
	<select name="info.uom" id="info.uom" style="width:120px;">
	</select>
</td>


下面是最重要的部分了吧,列出我的javascript代码,因为使用到了一个工具包prototype.js,所以$('s')可以使用document.getElementById('s')替代

1.getOptionsText(name)是一个方便我获得options内容的方法
function getOptionsText(name){
		if($("info.sdty").selectedIndex != -1){
			return $(name).options[$(name).selectedIndex].text
		}else{
			return "";
		}
	}

2.读取xml
function GetInfo(name)
{
	$('info.sdty').options.length=0;
	$('info.uom').options.length=0;

	var info;
	if(name == 1){
		info = "goods";
	}else if(name == 2){
		info = "truck"
	}else if(name == 3){
		info = "others";
	}else{
		return;
	}

	if(window.ActiveXObject){
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async = false;
		xmlDoc.load("data.xml");
	}else{
		var parser = new DOMParser();
		var xmlDoc = parser.parseFromString("data.xml","text/xml");
	}
	//var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	//xmlDoc.load("data.xml");
	//alert(xmlDoc.validateOnParse);

	xmlDoc = xmlDoc.getElementsByTagName(info)[0];
	var sdtys = xmlDoc.getElementsByTagName('sdty');
	var uoms = xmlDoc.getElementsByTagName('uom');
	for(var i=0;i<sdtys.length;i++){
		//alert(sdtys(i).firstChild.nodeValue);
		//$('info.sdty').options[i]=new Option(sdtys(i).firstChild.nodeValue,sdtys(i).firstChild.nodeValue);
		$('info.sdty').add(new Option(sdtys(i).firstChild.nodeValue,sdtys(i).firstChild.nodeValue));
	}
	for(var i=0;i<uoms.length;i++){
		$('info.uom').add(new Option(uoms(i).firstChild.nodeValue,uoms(i).firstChild.nodeValue));
	}

}

我并没有删除掉注释代码是因为曾经碰到了一个问题,开始我是用如下方法来做的
xmlDoc.load("data.xml");


然后被报告说xml不可读取的信息,后来我加入了一个alert
alert(xmlDoc.validateOnParse);

validateOnParse的作用是告诉解析器文件是否有效
说明:此属性是可擦写的。如果传回值为true,表示文件被解析时被确认是有效的。如果传回false,表示文件是无效的,并被认为只是标准格式的(well-formed)文件。
弹出的时true,然后xml也可以读取到下拉列表,手动设置它为true,xml却依然不能读取,凭着一点经验,把xml文件设置为非异步
xmlDoc.async = false;

结果OK了。不多解释,async还是很重要的一个属性,幸好使用Ajax做过一些东西。这个问题还算是没费太多功夫。
最后来个图片吧。
  • 大小: 47.5 KB
分享到:
评论
1 楼 小嘴看世界 2007-03-23  
平时很少用select,顺便把相关的知识总结一下
1.动态创建select

   function createSelect(){

       var mySelect = document.createElement("select");
       mySelect.id = "mySelect"; 
       document.body.appendChild(mySelect);
   }

2.添加选项option

  function addOption(){

       //根据id查找对象,
        var obj=document.getElementById('mySelect');

        //添加一个选项
        obj.add(new   Option("文本","值"));  
  }

3.删除所有选项option

  function removeAll(){
        var obj=document.getElementById('mySelect');
 
        obj.options.length=0; 

  }

4.删除一个选项option

function removeOne(){
        var obj=document.getElementById('mySelect');

        //index,要删除选项的序号,这里取当前选中选项的序号

        var index=obj.selectedIndex;
        obj.options.remove(index); 
  }

5.获得选项option的值

var obj=document.getElementById('mySelect');

var index=obj.selectedIndex; //序号,取当前选中选项的序号

var val = obj.options[index].value;

6.获得选项option的文本

var obj=document.getElementById('mySelect');

var index=obj.selectedIndex; //序号,取当前选中选项的序号

var val = obj.options[index].text;

7.修改选项option

var obj=document.getElementById('mySelect');

var index=obj.selectedIndex; //序号,取当前选中选项的序号

var val = obj.options[index]=new Option("新文本","新值");

8.删除select

   function removeSelect(){
         var mySelect = document.getElementById("mySelect");
        mySelect.parentNode.removeChild(mySelect);
  }

相关推荐

    jquery 通用三级联动下拉列表.rar

    jquery 通用三级联动下拉列表 , 用Jquery实现的三级联动下拉列表插件,压缩包内有多个不同的版本,其实现的基本原理大同小异,无非是调用方式的不同,第一个是通过读取XML构建,支持IE/firefox,chrome不支持,XML...

    省市县级联从XML文件读取

    从XML文件里读取省、市、县,加载到combox下拉列表框中,用C#语言写的,里面包含两个版本VS2010、VS2008。

    Xml+JS省市县三级联动(兼容IE FF)

    利用JS读取XML文件,实现省市县三级联动的下拉列表。

    jquery+json 通用三级联动下拉列表

    支持IE/firefox,chrome不支持,有兴趣的可以将读取XML的部分改成AJAX的方式,这样chrome支持就不成问题 第二个是采用Json数据格式构建,是我的第二次尝试改进 第三个与第二个其实是一样的,只不过将数据分离到JS...

    省市县下拉列列表框级联

    非常实用的使用ASP.NET实现的Dropdownlist省市县联动,值都是读取XML文件

    c实现无刷新dropdownlist联动效果

    然后,我们使用loadXML方法将返回结果加载到XML文档中,并使用selectNodes方法获取CITY表中的数据。最后,我们使用for循环将数据循环读取,并将其添加到第二个DropdownList中。 在实现无刷新DropdownList联动效果时...

    JAVA编程百例(照着例子更容易!)

    实例13 复合下拉列表 实例14 下拉列表 实例15 选项卡 实例16 对话框 实例17 文件对话框 实例18 使用HTML语言 实例19 菜单 实例2 java流程控制 实例20 工具栏 实例21 内部窗体 实例22 分割一个面板 实例23 滑动杆 ...

    ReportX 2.7.0.0

    可用于各种开发工具中进行二次开发,支持输入输出RPXE专用文件、XML文本、Excel文件、PDF文件 、Base64文本、HTML文件、TEXT文件,支持报表打印预览、打印设置、打印,支持各种行列操作,支持文本、下拉列表、按钮、...

    ReportX2.7.rar

    可用于各种开发工具中进行二次开发,支持输入输出RPXE专用文件、XML文本、Excel文件、PDF文件 、Base64文本、HTML文件、TEXT文件,支持报表打印预览、打印设置、打印,支持各种行列操作,支持文本、下拉列表、按钮、...

    javascript网页特效实例大全(13-19)

    实例374 无刷新的级联下拉列表 614 实例375 使用XML实现不刷新页面查询数据 616 16.3 调用与控制 619 实例376 将查询结果导出到Word 619 实例377 调用Excel 621 实例378 调用PowerPoint 622 16.4 其他...

    jQuery 通用三级下拉联动菜单插件增强版

    内容索引:脚本资源,jQuery,下拉菜单,三级联动 用Jquery实现的三级联动下拉列表插件,压缩包内有多个不同的版本,其实现的基本原理大同小异,无非是调用方式的不同,第一个是通过读取XML构建,支持IE/firefox,...

    NK2Edit x64 v2.84 帮Outlook提供邮件清单.zip

    轻松删除显示名称,然后从下拉列表中不需要的单引号。 删除不需要的电子邮件以及添加新的电子邮件,通过手工打字,或选择从Outlook地址本上。 复制NK2记录从一个到另一个NK2文件 - 只需复制和粘贴! 建立一个全新的...

    ReportX2.7.0.0

    可用于各种开发工具中进行二次开发,支持输入输出RPXE专用文件、XML文本、Excel文件、PDF文件 、Base64文本、HTML文件、TEXT文件,支持报表打印预览、打印设置、打印,支持各种行列操作,支持文本、下拉列表、按钮、...

    表格2.7翻译的版本

    可用于各种开发工具中进行二次开发,支持输入输出RPXE专用文件、XML文本、Excel文件、PDF文件 、Base64文本、HTML文件、TEXT文件,支持报表打印预览、打印设置、打印,支持各种行列操作,支持文本、下拉列表、按钮、...

    ASP200问.EXE

    132.如何解决下拉列表出现选项重复的问题 133.如何实现在下拉列表中输入文字 134.如何实现级联下拉列表 135.如何根据用户的分辨率调整窗口 136.如何弹出自定义窗口(示例一) 136.如何弹出自定义窗口(示例二) 136....

    C++ qt5 电子版教程

    1.7 QFontComboBox字体下拉列表框 27 1.8 QSpinBox控件 28 1.9 QTimeEdit时间控件 29 1.10 QDateEdit日期控件 30 1.11 QScrollBar控件 30 1.12 QRadioButton单选按钮 31 1.13 QCheckBox复选框 32 1.14 QListView ...

    ReportX2.6

    可用于各种开发工具中进行二次开发,支持输入输出RPXE专用文件、XML文本、Excel文件、PDF文件 、Base64文本、HTML文件、TEXT文件,支持报表打印预览、打印设置、打印,支持各种行列操作,支持文本、下拉列表、按钮、...

    C++ QT5 电子书教程

    1.7 QFontComboBox字体下拉列表框 27 1.8 QSpinBox控件 28 1.9 QTimeEdit时间控件 29 1.10 QDateEdit日期控件 30 1.11 QScrollBar控件 30 1.12 QRadioButton单选按钮 31 1.13 QCheckBox复选框 32 1.14 QListView ...

    JavaScript网页特效范例宝典源码

    实例063 在下拉列表中进行多选移除 106 实例064 将数组中的数据添加到下拉菜单中 107 实例065 应用下拉菜单选择所要联机的网站 108 实例066 多级级联菜单 110 实例067 可以输入文字的下拉菜单 111 实例068 根据下拉...

    《javaScrip开发技术大全》源代码

    • sample27.htm 替换使用字符串查找到的子字符串 • sample28.htm 扩展字符串的匹配方式 • sample29.htm 使用正则表达式匹配要替换的子字符串 • sample30.htm 更多的替换字符串 ...

Global site tag (gtag.js) - Google Analytics