AJAX开发简略续一(4)

2005/12/20 23:09:17


阅读全文(2948) | 回复(0) | 编辑 | 精华

例子5 -- sample4_3.htm: 正如我们在Node节点介绍部分所指出的那样,appendChild()、replaceChild()、removeChild()、insertBefore()方法会立即改变文档的结构。下面的例子包含两个表格,我们试着把表格二的内容替换表格一的内容。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title> <script language="javascript"> function replaceContent() {        var table1 = document.getElementsByTagName("table")[0];        var table2 = document.getElementsByTagName("table")[1];        var kid1 = table1.firstChild.firstChild.firstChild; //定位到<td>节点        var kid2 = table2.firstChild.firstChild.firstChild; //定位到<td>节点        var repKid = kid2.firstChild; //定位到表格二<td>内含的TextNode节点        try {               //用表格二的单元格内容替换表格一的单元格内容,表格二变成没有单元格内容               kid1.replaceChild(repKid,kid1.firstChild);               //下面注释如果开放,将出现object error,因为表格二已经被改变               //kid2.replaceChild(kid1.firstChild,kid2.firstChild);        }catch(e){               alert(e);        } } </script> </head> <body> <table width="200" border="1" cellspacing="0" cellpadding="0"> <tbody>     <tr>         <td>表格一</td>     </tr> </tbody> </table> <br> <table width="200" border="1" cellspacing="0" cellpadding="0"> <tbody>     <tr>         <td>表格二</td>     </tr> </tbody> </table> <br> <input type="button" name="replaceNode" value="替换" onClick="replaceContent()"> </body> </html>      500)this.width=500'>500)this.width=500'> 注意,当执行kid1.replaceChild(repKid,kid1.firstChild);的时候,table2的子节点已经被转移到table1了,table2已经没有子节点,不能再调用table2的子节点。看看代码的注释,试着运行一下,应该就知道文档是怎么改变的了。 D、往文档添加新内容 在学会遍历、搜索、修改文档之后,我们现在试着网文档添加新的内容。其实没有什么新意,只是利用我们上述提到的Node的属性和方法而已,还是操作<table>标记的内容。有新意的是,我们要实现一个留言簿。是的,留言簿,你可以往里面留言,只是不能刷新噢。 例子6 – sample5_1.htm: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> <title>无标题文档</title> <script language="javascript"> function insertStr() {        var f = document.form1;        var value = f.str.value;        if(value!="") {               // 从最终的TextNode节点开始,慢慢形成<tbody>结构               var text = document.createTextNode(value); //新建一个TextNode节点               var td = document.createElement("td"); //新建一个td类型的Element节点               var tr = document.createElement("tr"); //新建一个tr类型的Element节点               var tbody = document.createElement("tbody"); //新建一个tbody类型的Element节点               td.appendChild(text); //将节点text加入td中               tr.appendChild(td); //将节点td加入tr中               tbody.appendChild(tr); //将节点tr加入tbody中               var parNode = document.getElementById("table1"); //定位到table上               parNode.insertBefore(tbody,parNode.firstChild); //将节点tbody插入到节点顶部               //parNode.appendChild(tbody); //将节点tbody加入节点尾部        } } </script> </head> <body> <form name="form1" method="post" action="">     <input name="str" type="text" id="str" value="">     <input name="insert" type="button" id="insert" value="留言" onClick="insertStr()"> </form> <table width="400" border="1" cellspacing="0" cellpadding="0" id="table1"> <tbody>     <tr>         <td height="25">网友留言列表:</td>     </tr> </tbody> </table> </body> </html> 我们之前说过,<table>的子节点是<tbody>,<tbody>的子节点才是<tr>,<tr>是<td>的父节点,最后<td>内部的TextNode节点。所以,往<table>增加单元格行要逐级形成,就像往树里面添加一个枝桠一样,要有叶子有径。看看,这个留言簿是不是很简单啊。这个例子同时也演示了往<table>表格标记里面增加内容的另一种方法。 500)this.width=500'>500)this.width=500'>

Qr

Posted by Qr on 2005/12/20 23:09:17


发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.625 second(s), page refreshed 144795298 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号