﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-Hello World-文章分类-Javascript/Css</title><link>http://www.blogjava.net/siliconchip/category/16746.html</link><description>Java技术学习</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 12:37:08 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 12:37:08 GMT</pubDate><ttl>60</ttl><item><title>[转] XML DOM介绍和例子</title><link>http://www.blogjava.net/siliconchip/articles/84087.html</link><dc:creator>Java初心</dc:creator><author>Java初心</author><pubDate>Tue, 28 Nov 2006 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/siliconchip/articles/84087.html</guid><wfw:comment>http://www.blogjava.net/siliconchip/comments/84087.html</wfw:comment><comments>http://www.blogjava.net/siliconchip/articles/84087.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/siliconchip/comments/commentRss/84087.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/siliconchip/services/trackbacks/84087.html</trackback:ping><description><![CDATA[
		<p>XML DOM介绍和例子</p>
		<p>1.文档对象模型（DOM） <br />　　DOM是HTML和XML文档的编程基础，它定义了处理执行文档的途径。编程者可以使用DOM增加文档、定位文档结构、填加修改删除文档元素。W3C 的重要目标是把利用DOM提供一个使用于多个平台的编程接口。W3C DOM被设计成适合多个平台，可使用任意编程语言实现的方法。 <br />　　2.节点接口 <br />　　XML parser用来装载XML文档到缓存中，文档装载时，可以使用DOM进行检索和处理。DOM采用树形结构表示XML文档，文档元素是树的最高阶层，该元素有一个或多个孩子节点用来表示树的分枝。 <br />　　节点接口程序通常用来读和写XML节点树中的个别元素，文档元素的孩子节点属性可以用来构造个别元素节点。XML parser用来证明Web中的DOM支持遍历节点树的所有函数，并可通过它们访问节点和及其属性、插入删除节点、转换节点树到XML中。 <br />　　所有Microsoft XML parser函数得到W3C XML DOM的正式推荐，除了load和 loadXML函数（正式的DOM不包括标准函数loading XML文档）。有13个节点类型被Microsoft  XML parser支持，下面列出常用节点： <br />　　节点类型例子 <br />　　Document type &lt;!DOCTYPE food SYSTEM "food.dtd"&gt;  <br />　　Processing instruction &lt;?xml version="1.0"?&gt;  <br />　　Element &lt;drink type="beer"&gt;Carlsberg&lt;/drink&gt;  <br />　　Attribute type="beer"  <br />　　Text Carlsberg  </p>
		<p> <br /> 　　<br />3.使用XML parser <br />　　为了更加熟练的处理XML文档，必须使用XML parser。Microsoft XML parser是IIS5.0所带的一个COM组件，一旦安装了IIS5.0，parser可以利用HTML文档和ASP文件中的脚本。 <br />　　Microsoft XMLDOM parser支持以下编程模式： <br />　　----支持JavaScript, VBScript, Perl, VB, Java, C++ 等等 <br />　　----支持W3C XML 1.0 和XML DOM  <br />　　----支持DTD 和validation  <br />　　如果使用IE5.0中的JavaScript，可以使用下面的XML文档对象： <br />　　var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") <br />　　如果使用VBScript，可以使用下面的XML文档对象： <br />　　set xmlDoc = CreateObject("Microsoft.XMLDOM") <br />　　如果使用ASP，可以使用下面的XML文档对象： <br />　　set xmlDoc = Server.CreateObject("Microsoft.XMLDOM") </p>
		<p>
				<br />4.装载一个XML文件到parser中 <br />　　 下面的代码装载存在的XML文档进入XML parser: <br />　　 &lt;script language="JavaScript"&gt; <br />　　 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.load("note.xml") <br />　　 // ....... processing the document goes here <br />　　 &lt;/script&gt; <br />　　 第一行脚本增加了一个Microsoft XML parser实例，第三行装载名为”note.xml”的XML文档进入parser中。第二行保证文档装载完成以后parser进行下一步工作。 <br />　　</p>
		<p>5. parseError对象 <br />　　 打开XMl文档时，XML Parser产生错误代码，并存在parseError对象中，包括错误代码、错误文本和错误行号，等信息。 <br />　　 </p>
		<p>6.文件错误 <br />　　 下面的例子将试图装载一个不存在的文件，然后产生相应的错误代码： <br />　　 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.load("ksdjf.xml") <br />　　 document.write("&lt;br&gt;Error Code: ") <br />　　 document.write(xmlDoc.parseError.errorCode) <br />　　 document.write("&lt;br&gt;Error Reason: ") <br />　　 document.write(xmlDoc.parseError.reason) <br />　　 document.write("&lt;br&gt;Error Line: ") <br />　　 document.write(xmlDoc.parseError.line) <br />　　 </p>
		<p>7.XML错误 <br />　　 下面使用不正确的格式装载XMl文档， <br />　　 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.load("note_error.xml") <br />　　 document.write("&lt;br&gt;Error Code: ") <br />　　 document.write(xmlDoc.parseError.errorCode) <br />　　 document.write("&lt;br&gt;Error Reason: ") <br />　　 document.write(xmlDoc.parseError.reason) <br />　　 document.write("&lt;br&gt;Error Line: ") <br />　　 document.write(xmlDoc.parseError.line) <br />　　 </p>
		<p>8. parseError属性 <br />　　 属性描述： <br />　　 errorCode 返回长整型错误代码 <br />　　 reason 返回字符串型错误原因 <br />　　 line 返回长整型错误行号 <br />　　 linePos 返回长整型错误行号位置 <br />　　 srcText 返回字符串型产生错误原因 <br />　　 url 返回url装载文档指针 <br />　　 filePos 返回长整型错误文件位置 <br />　　 </p>
		<p>9.遍历节点树 <br />　　 一种通用的析取XML文档的方法是遍历节点树和它的元素值。下面是使用VBScript写的遍历节点树的程序代码： <br />　　 set xmlDoc=CreateObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.load("note.xml") <br />　　 for each x in xmlDoc.documentElement.childNodes <br />　　 document.write(x.nodename) <br />　　 document.write(": ") <br />　　 document.write(x.text) <br />　　 next  <br />　　 </p>
		<p>10.为XML文件提供HTML格式 <br />　　 XML的一个优点是把HTML文档和它的数据分离开。通过使用浏览器中的XML parser，HTML页面可以被构造成静态文档，通过JavaScript提供动态数据。下面的例子使用JavaScript读取XML文档，写XML数据成HTML元素： <br />　　 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.load("note.xml") <br />　　 nodes = xmlDoc.documentElement.childNodes <br />　　 to.innerText = nodes.item(0).text <br />　　 from .innerText = nodes.item(1).text <br />　　 header.innerText = nodes.item(2).text <br />　　 body.innerText = nodes.item(3).text <br />　　 </p>
		<p>11.通过名称访问XML元素 <br />　　 下面的例子使用JavaScript读取XML文档，写XML数据成HTML元素： <br />　　 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.load("note.xml") <br />　　 document.write(xmlDoc.getElementsByTagName("from").item(0).text) <br />　　 </p>
		<p>12.装载纯XML文本进入parser  <br />　　 下面的代码装载文本字符串进入XML parser ： <br />　　 &lt;script language="JavaScript"&gt; <br />　　 var text="&lt;note&gt;" <br />　　 text=text+"&lt;to&gt;Tove&lt;/to&gt;&lt;from&gt;Jani&lt;/from&gt;" <br />　　 text=text+"&lt;heading&gt;Reminder&lt;/heading&gt;" <br />　　 text=text+"&lt;body&gt;Don't forget me this weekend!&lt;/body&gt;" <br />　　 text=text+"&lt;/note&gt;" <br />　　 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.loadXML(text) <br />　　 // ....... processing the document goes here <br />　　 &lt;/script&gt; <br />　　 </p>
		<p>13.装载XML进入Parser  <br />　　 &lt;html&gt; <br />　　 &lt;body&gt; <br />　　 &lt;script language="javascript"&gt; <br />　　 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.load("note.xml") <br />　　 document.write("The first XML element in the file contains: ") <br />　　 document.write(xmlDoc.documentElement.childNodes.item(0).text) <br />　　 &lt;/script&gt; <br />　　 &lt;/body&gt; <br />　　 &lt;/html&gt; <br />　　 </p>
		<p>     遍历XML节点树： <br />　　 &lt;html&gt; <br />　　 &lt;body&gt; <br />　　 &lt;script language="VBScript"&gt; <br />　　 txt="&lt;h1&gt;Traversing the node tree&lt;/h1&gt;" <br />　　 document.write(txt) <br />　　 set xmlDoc=CreateObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.load("note.xml") <br />　　 for each x in xmlDoc.documentElement.childNodes <br />　　 document.write("&lt;b&gt;" &amp; x.nodename &amp; "&lt;/b&gt;") <br />　　 document.write(": ") <br />　　 document.write(x.text) <br />　　 document.write("&lt;br&gt;") <br />　　 next <br />　　 &lt;/script&gt; <br />　　 &lt;/body&gt; <br />　　 &lt;/html&gt; </p>
		<p>
				<br />　　 装载XML 进入HTML  <br />　　 &lt;html&gt; <br />　　 &lt;head&gt; <br />　　 &lt;script language="JavaScript" <br />　　 for="window" event="onload"&gt; <br />　　 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") <br />　　 xmlDoc.async="false" <br />　　 xmlDoc.load("note.xml") <br />　　 nodes = xmlDoc.documentElement.childNodes <br />　　 to.innerText = nodes.item(0).text <br />　　 from.innerText = nodes.item(1).text <br />　　 header.innerText = nodes.item(2).text <br />　　 body.innerText = nodes.item(3).text <br />　　 &lt;/script&gt; <br />　　 &lt;title&gt;HTML using XML data&lt;/title&gt; <br />　　 &lt;/head&gt; <br />　　 &lt;body bgcolor="yellow"&gt; <br />　　 &lt;h1&gt;Refsnes Data Internal Note&lt;/h1&gt; <br />　　 &lt;b&gt;To: &lt;/b&gt;&lt;span id="to"&gt;&lt;/span&gt; <br />　　 &lt;br&gt; <br />　　 &lt;b&gt;From: &lt;/b&gt;&lt;span id="from"&gt;&lt;/span&gt; <br />　　 &lt;hr&gt; <br />　　 &lt;b&gt;&lt;span id="header"&gt;&lt;/span&gt;&lt;/b&gt; <br />　　 &lt;hr&gt; <br />　　 &lt;span id="body"&gt;&lt;/span&gt; <br />　　 &lt;/body&gt; <br />　　 &lt;/html&gt;　</p>
		<p>１、DOM树  <br />所有类型的XML解析器都要求处理对象是“格式良好”的XML文档，有些还能根据DTD或XML Schema进行有效性验证，DOM （Document Object Model）解析器将XML文档一次性解析，生成一个位于内存中的对象树用以描述该文档。   <br />DOM是一种与平台和语言无关的接口，它允许程序和脚本动态访问和修改文档的内容、结构和类型。它定义了一系列的对象和方法对DOM树的节点进行各种随机操作：  </p>
		<p>
				<br />● Document对象：作为树的最高节点，Document对象是对整个文档进行操作的入口。  <br />● Element和Attr对象：这些节点对象都是文档某一部分的映射，节点的定级层次恰好反映了文档的结构。  <br />● Text对象：作为Element和Attr对象的子节点，Text对象表达了元素或属性的文本内容。Text节点不再包含任何子节点。  <br />● 集合索引：DOM提供了几种集合索引方式，可以对节点按指定方式进行遍历。索引参数都是从0开始记数的。</p>
		<p>
				<br />DOM树中的所有节点都是从Node对象继承而来的。Node对象定义了一些最基本的属性和方法，利用这些方法可以实现对树的遍历，同时，根据属性还可以得知节点的名称、取值并判断其类型。  <br />利用DOM，开发人员可以动态地创建XML、遍历文档、增加/删除/修改文档内容。DOM提供的API与编程语言无关，所以对一些DOM标准中没有明确定义的接口，不同解析器的实现方法也可能有所差别。为方便描述，本文的举例均采用MSXML DOM方案并用VB Script编写代码。  </p>
		<p>
				<br />２、DOM树的结构  <br />Document对象建立之后，就可以与XML文档或数据岛联系在一起。数据岛的加载方法是将数据岛ID赋给Document对象：  <br />&lt;XML ID=“dsoDetails” src=“Books.xml”&gt;&lt;/XML&gt;  <br />Set doc = dsoDetails.XMLDocument  <br />加载文档大体上分为三步：  <br />1．使用CreateObject方法创建分析器实例；  <br />2．设置async属性为False，禁止异步加载，这样当文档加载完毕，控制权才会返回给调用进程，如果想获取文档加载状态，可以读取readyState属性值；  <br />3．使用load方法加载指定文档。  <br />Set doc = CreateObject(“Microsoft.XMLDOM”)  <br />doc.async = False  <br />doc.load “Books.xml”  <br />XML DOM还提供了一种loadXML的方法可以把XML字符串加载到DOM树中，使用时只要把XML字符串直接作为该方法的参数即可。  </p>
		<p>
				<br />３、DOM树的访问  <br />在文档加载完毕之后就可以使用documentElement属性访问根元素：  <br />Set rootNode = doc.documentElement  <br />一旦建立了对DOM树中某个节点（例如根节点）的引用，就可以根据节点间的等级关系调用适当的方法进行遍历。  <br />下面以books.xml为例说明各种方法的使用：  <br />&lt;xml id=“dsoBooks”&gt;  <br />&lt;?xml version=“1.0”?&gt;<br />&lt;booklist&gt;</p>
		<p>&lt;book&gt;  <br />&lt;title&gt;The Gourmet Microwave&lt;/title&gt;   <br />&lt;price&gt;9.95&lt;/price&gt;  <br />&lt;author&gt;Charlotte M. Cooper&lt;/author&gt;  <br />&lt;author&gt;Shelley B. Burke&lt;/author&gt;  <br />&lt;author&gt;Regina P. Murphy&lt;/author&gt;  <br />&lt;/book&gt;</p>
		<p>&lt;book&gt;  <br />&lt;title&gt;Sushi, Anyone?&lt;/title&gt;   <br />&lt;price&gt;14.99&lt;/price&gt;<br />&lt;/book&gt;</p>
		<p>&lt;book&gt;  <br />&lt;title&gt;Straight Talk About Computers&lt;/title&gt;<br /> &lt;price&gt;19.99&lt;/price&gt;  <br />&lt;author&gt;Lars Peterson&lt;/author&gt;  <br />&lt;/book&gt;</p>
		<p>&lt;/booklist&gt;&lt;/xml&gt;  <br />建立对第二个&lt;book&gt;元素的引用：  <br />Set theNode =dsoBooks.XMLDocument.documentElement.childNodes(1)  <br />● 根节点：theNode.ownerDocument返回Document节点，指向XML文档本身；  <br />● 兄弟节点：theNode.previousSibling返回第1个&lt;book&gt;元素，theNode.nextSibling返回第3个&lt;book&gt;元素;  <br />● 父节点：theNode.parentNode返回&lt;booklist&gt;元素;  <br />● 子节点：theNode.firstChild返回&lt;title&gt;元素，theNode.lastChild返回&lt; price&gt;元素，theNode.childNodes返回子节点集合，包括Sushi下面的所有元素。节点记数从0开始，即 theNode.childNodes(0)的结果与theNode.firstChild的结果是一样的。  <br />获得节点的引用后，就可以读取节点的相关信息：  <br />● 节点类型：theNode.nodeType，本例为1，Document对象类型为9，元素类型为1，属性类型为2；  <br />● 节点名称：theNode.nodeName，本例为book；  <br />● 节点值：theNode.nodeValue，本例为null，对于Attr节点，返回的是属性值，而对于Element节点，返回的是null。  <br />在MSXML中，对Node对象还提供了一些额外的方法和属性：  <br />● nodeTypeString：用字符串的方式显示节点类型，如theNode.nodeTypeString的结果是“element”；  <br />● text: 显示当前节点及其所有子节点的文本内容;  <br />● xml：获取XML文档数据，通常是从根元素开始的所有内容。</p>
		<p>
				<br />４、XML格式的动态转换  <br />通过学习XSL，我们已经能够使用样式单对XML文档进行转换。但这种过程是静态的，即在编写代码时，已经指定了作用在XML上的XSL文件，在程序运行过程中不能再做改变。而利用DOM，我们能够实现XML格式的动态转换，即在程序运行时，将XSL载入并对XML文档进行转换。  <br />把XSL载入DOM对象的步骤基本上与XML文档的载入过程是一样的（XSL本身就是XML文档）：  <br />Set stylesheet = CreateObject(“Microsoft.XMLDOM”)  <br />stylesheet.async = False  <br />stylesheet.load “TransformDetails.xsl”  <br />DOM提供了两个函数进行这种转换，作用对象可以是树中任何节点。这样就可以实现对DOM树的任意的部分进行格式转换。  <br />● transformNodeToObject方法：该方法需要两个参数，第一个参数指向XSL文件，第二个参数存放转换后的XML数据的节点。例如：  <br />Set targetNode = CreateObject(“Microsoft.XMLDOM”)  <br />srcNode.transformNodeToObject stylesheet, targetNode  <br />● transformNode方法：该方法只需要一个参数指明XSL文件。如下例是将源节点转换为一个字符串变量str：  <br />str = srcNode.transformNode(stylesheet)  </p>
		<p>１、DOM解析时的错误  <br />DOM在解析XML文档的时候可能会产生各式各样的错误，可以根据ParseError对象中的属性得知出错的可能原因及相关信息。  <br />常用的属性及其含义如下表所示：  <br />属性 说明  <br />errorCode 错误代码  <br />filepos 错误在文档中的绝对字符位置  <br />line 错误所在行的行号  <br />linepos 错误所在行的字符位置  <br />reason 错误产生原因  <br />srcText 错误所在行的源代码  <br />url 最近一份含有解析错误的XML文档的URL地址  <br />  <br />  <br />２、访问DOM树中的元素与属性  <br />DOM还提供了许多查找节点的方法。其中基于搜索机制的方法有：  <br />● 根据标签名称搜索元素；  <br />● 使用XSL模式搜索节点；  <br />● 利用集合索引搜索节点。  <br />以books.xml为例，Document对象中的getElementsByTagName方法就是根据参数中的标签名称在全文范围内查找元素的，返回值是一个NodeList对象：  <br />Set doc = dsoDetails.XMLDocument   <br />Set authors = doc.getElementsByTagName(“author”)  <br />上述查询结果中包含了文档中出现的全部4位作者。如果调用的是Element对象中的getElementsByTagName方法，除了搜索范围缩小为该元素的所有后继节点之外，其他的情况都是一样的。  <br />所有类型的节点都带有selectNodes方法，该方法的唯一参数是XSL的模式规则，返回值是匹配该规则的结果集合。调用这个方法可以利用XSL的模式匹配策略查找节点。例如：  <br />Set rootNode = doc.documentElement   <br />Set cheapbooks = rootNode.selectNodes(“//book[price &lt; 10]”)  <br />这个例子返回所有售价低于10元的&lt;book&gt;元素。另外，节点中的selectSingleNodes方法的用法与selectNodes是一样的，只是返回结果为查找到的满足条件的第一个节点而已。 </p>
		<p>
				<br />对于元素节点，获取元素标签名称的方法有两种：anyElement.nodeName和anyElement.tagName。前者是Node对象的属性，后者是Element对象的属性。  <br />如果想获取元素中的文本内容，如: &lt;price&gt;9.95  <br />&lt;/price&gt;时，访问Element对象中的nodeValue属性是错误的，这时返回结果是null，而不是预期的9.95。含有文本内容的元素都包含一个Text类型的子节点，所以只有通过Text对象中的nodeValue属性才能真正访问到文本内容。   <br />添加元素的步骤如下：  <br />● 创建一个Text节点并赋值；  <br />● 创建Element节点；  <br />● 把Text节点挂在Element节点下，作为它的子节点；  <br />● 把Element节点插入到XML文档的合适位置上。  </p>
		<p>
				<br />对于元素节点的删除和替换操作，首先都要对操作对象进行定位，然后相应地执行对象节点所属父节点的removeChild方法和replaceChild方法即可。  <br />Attr节点的各种操作在原理上与Element节点相同。Attr对象同样继承了Node对象中的各种方法和属性，并且MSXML中还提供了name属性和value属性，能够更直接地访问到属性信息。另外，还可以通过属性所属元素的相关方法访问属性，如通过getAttribute和 setAttribute方法读取属性值或修改属性值，或者用getAttributeNode方法直接返回Attr对象。  <br />创建新属性最直接的办法就是使用Element对象中的setAttribute方法。也可以先用Document对象中的 createAttribute方法设置属性值，然后使用Element对象中的setAttributeNode方法把新节点添加到DOM树中。同样地，删除属性最直接的方法是调用Element中的removeAttribute方法。另外一种方案是先用getAttributeNode方法对操作对象进行定位，然后执行removeAttributeNode操作。  <br />从以上的介绍中可以看出，由于节点间的继承关系，以及各种类型节点本身提供的丰富的接口，用户可以很容易地找到一套适合自己需要的对象操作方案。  <br />   <br />３、DOM的显示功能  <br />DOM技术还可以用来显示XML数据。XSL样式单面向的是XML文档的转换，用于显示格式的转换是其应用的一个方面，所以在显示功能上还存在着一些不足：  <br />● 不易完成对XML数据的复杂处理，如将英文字母全部转换为大写，截取指定长度的字符串，忽略一些特定的标点等；  <br />● 不易对XML数据中的数值进行计算；  <br />● 一个XSL通常是静态地作用到一个XML文档上，无法将多个XML文档中的数据用一个XSL合并转换为一个输出结果。  <br />使用DOM就能够很好地解决上述问题<br /> <br /></p>
<img src ="http://www.blogjava.net/siliconchip/aggbug/84087.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/siliconchip/" target="_blank">Java初心</a> 2006-11-28 16:38 <a href="http://www.blogjava.net/siliconchip/articles/84087.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>checkbox全选/全不选等相关操作</title><link>http://www.blogjava.net/siliconchip/articles/checkbox.html</link><dc:creator>Java初心</dc:creator><author>Java初心</author><pubDate>Fri, 15 Sep 2006 02:23:00 GMT</pubDate><guid>http://www.blogjava.net/siliconchip/articles/checkbox.html</guid><wfw:comment>http://www.blogjava.net/siliconchip/comments/69819.html</wfw:comment><comments>http://www.blogjava.net/siliconchip/articles/checkbox.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/siliconchip/comments/commentRss/69819.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/siliconchip/services/trackbacks/69819.html</trackback:ping><description><![CDATA[
		<p>
				<font face="Arial" size="1">正好项目里要用到，自己写了一下，记下来，以后可以用用<br /><br />&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"<br />"<a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>"&gt;<br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;<br />&lt;title&gt;test checkbox&lt;/title&gt;<br />&lt;script language="javascript"&gt;<br />function checkall()<br />{<br />  var objForm = document.ckform;<br />  var objLen = objForm.length;<br />  for (var elcount = 0; elcount &lt; objLen; elcount++)<br />  {<br />    if (objForm.elements[elcount].type == "checkbox")<br />    {<br />      objForm.elements[elcount].checked = true;<br />    }<br />  }<br />}<br />function clearall()<br />{<br />  var objForm = document.ckform;<br />  var objLen = objForm.length;<br />  for (var elcount = 0; elcount &lt; objLen; elcount++)<br />  {<br />    if (objForm.elements[elcount].type == "checkbox")<br />    {<br />      objForm.elements[elcount].checked = false;<br />    }<br />  }<br />}<br />function checkop(opvalue){<br />  var objForm = document.ckform;<br />  var objLen = objForm.length;<br />  for (var elcount = 0; elcount &lt; objLen; elcount++)<br />  {<br />    if (objForm.elements[elcount].type == "checkbox")<br />    {<br />     if (objForm.elements[elcount].id.indexOf(opvalue)==0){<br />        objForm.elements[elcount].checked = true;<br />      }<br />      else{<br />       objForm.elements[elcount].checked = false;<br />      }<br />    }<br />  } <br />}</font>
		</p>
		<p>
				<font face="Arial" size="1">function checkresult(){<br />  var objForm = document.ckform;<br />  var objLen = objForm.length;<br />  var flag=true;<br />  var checkvalue="";<br />  for (var elcount = 0; elcount &lt; objLen; elcount++)<br />  {<br />    if (objForm.elements[elcount].type == "checkbox")<br />    {<br />      if(objForm.elements[elcount].checked ==true){<br />       flag=false;<br />       if (checkvalue==""){<br />        checkvalue=objForm.elements[elcount].value;<br />       }<br />       else{<br />        checkvalue=checkvalue+","+objForm.elements[elcount].value;<br />       }<br />      }<br />    }<br />  } <br />  if (flag==true){<br />   alert("至少选择一个");<br />  }<br />  alert(checkvalue);<br />}<br />&lt;/script&gt;<br />&lt;/head&gt;</font>
		</p>
		<p>
				<font face="Arial" size="1">&lt;body&gt;<br />&lt;form name="ckform" method="post" action=""&gt;<br />  &lt;table width="100%"  border="1"&gt;<br />    &lt;tr&gt;<br />      &lt;td&gt;&lt;input type="checkbox" id="1011" name="checkbox" value="1"&gt;&lt;/td&gt;<br />      &lt;td&gt;&lt;input type="checkbox" id="1022" name="checkbox" value="2"&gt;&lt;/td&gt;<br />      &lt;td&gt;&lt;input type="checkbox" id="1033" name="checkbox" value="3"&gt;&lt;/td&gt;<br />    &lt;/tr&gt;<br />    &lt;tr&gt;<br />      &lt;td&gt;&lt;input type="checkbox" id="2011" name="checkbox" value="4"&gt;&lt;/td&gt;<br />      &lt;td&gt;&lt;input type="checkbox" id="2022" name="checkbox" value="5"&gt;&lt;/td&gt;<br />      &lt;td&gt;&lt;input type="checkbox" id="2033" name="checkbox" value="6"&gt;&lt;/td&gt;<br />    &lt;/tr&gt;<br />    &lt;tr&gt;<br />      &lt;td&gt;&lt;input type="checkbox" id="3011" name="checkbox" value="7"&gt;&lt;/td&gt;<br />      &lt;td&gt;&lt;input type="checkbox" id="3022" name="checkbox" value="8"&gt;&lt;/td&gt;<br />      &lt;td&gt;&lt;input type="checkbox" id="3033" name="checkbox" value="9"&gt;&lt;/td&gt;<br />    &lt;/tr&gt;<br />    &lt;tr&gt;<br />      &lt;td&gt;&lt;input type="button" name="bu1" id="bu1" value="全选" onClick="checkall();"&gt;&lt;input type="button" name="bu2" id="bu2" value="全部不选" onClick="clearall();"&gt;&lt;/td&gt;<br />      &lt;td&gt;&lt;input type="button" name="Submit" value="选中一行" onClick="checkop('20');"&gt;&lt;/td&gt;<br />      &lt;td&gt;&lt;input type="button" name="Submit" value="提交" onClick="checkresult();"&gt;&lt;/td&gt;<br />    &lt;/tr&gt;<br />  &lt;/table&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /></font>
		</p>
<img src ="http://www.blogjava.net/siliconchip/aggbug/69819.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/siliconchip/" target="_blank">Java初心</a> 2006-09-15 10:23 <a href="http://www.blogjava.net/siliconchip/articles/checkbox.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>