使用Javascript和DOM Interfaces来处理HTML

1、创建表格


Sample code - Traversing an HTML Table with JavaScript and DOM Interfaces

function start() {
// get the reference for the body
var mybody=document.getElementsByTagName("body").item(0);
// creates an element whose tag name is TABLE
mytable = document.createElement("TABLE");
// creates an element whose tag name is TBODY
mytablebody = document.createElement("TBODY");
// creating all cells
for(j=0;j

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

Note the order in which we created the elements and the text node:

First we created the TABLE element. 
Next, we created the TBODY element, which is a child of the TABLE element. 
Next, we used a loop to create the TR elements, which are children of the TBODY element. 
For each TR element, we used a loop to create the TD elements, which are children of TR elements. 
For each TD element, we then created the text node with the table cell's text. 
Once we have created the TABLE, TBODY, TR, and TD elements and then the text node, we then append each object to its parent in the opposite order:

First, we attach each text node to its parent TD element using 
mycurrent_cell.appendChild(currenttext);
Next, we attach each TD element to its parent TR element using 
mycurrent_row.appendChild(mycurrent_cell);
Next, we attach each TR element to the parent TBODY element using 
mytablebody.appendChild(mycurrent_row);
Next, we attach the TBODY element to its parent TABLE element using 
mytable.appendChild(mytablebody);
Next, we attach the TABLE element to its parent BODY element using 
mybody.appendChild(mytable);

Remember this technique. You will use it frequently in programming for the W3C DOM. First, you create elements from the top down; then you attach the children to the parents from the bottom up.

Here's the HTML markup generated by the JavaScript code:

...
<TABLE border=5>
<tr><td>cell is row 0 column 0</td><td>cell is row 0 column 1</td></tr>
<tr><td>cell is row 1 column 0</td><td>cell is row 1 column 1</td></tr>
</TABLE>
...

Here's the DOM object tree generated by the code for the TABLE element and its child elements:

Image:sample1-tabledom.jpg

You can build this table and its internal child elements by using just a few DOM methods. Remember to keep in mind the tree model for the structures you are planning to create; this will make it easier to write the necessary code. In the TABLE tree of Figure 1 the element TABLE has one child, the element TBODY. TBODY has two children. Each TBODY's child (TR) has one child (TD). Finally, each TD has one child, a text node.

2、

Sample code - Traversing an HTML Table with JavaScript and DOM
Interfaces

function start() {
// get a list of all the body elements (there will only be one)
myDocumentElements=document.getElementsByTagName("body");
// the body element itself is the first item of the list
myBody=myDocumentElements.item(0);
// now, get all the p elements that are children of the body
myBodyElements=myBody.getElementsByTagName("p");
// get the second item of the list of p elements
myP=myBodyElements.item(1);
}

hi

hello

[Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

In this example, we set the myP variable to the DOM object for the second p element inside the body:

First, we get a list of all the body elements via 
document.getElementsByTagName("body")
Since there is only one body element in any valid HTML document, this list will have only one item. 
Next, we get the first element on that list, which will be the object for the body element itself, via 
myBody=myDocumentElements.item(0);
Next, we get all the p elements that are children of the body via 
myBodyElements=myBody.getElementsByTagName("p");
Finally, we get the second item from the list of p elements via 
myP=myBodyElements.item(1);

Image:sample2a2.jpg

Once you have gotten the DOM object for an HTML element, you can set its properties. For example, if you want to set the style background color property, you just add:

myP.style.background="rgb(255,0,0)";
// setting inline STYLE attribute

[编辑]

Creating TextNodes with document.createTextNode(..) 
Use the document object to invoke the createTextNode method and create your text node. You just need to pass the text content. The return value is an object that represents the text node.

myTextNode=document.createTextNode("world");

This means that you have created a node of the type TEXT_NODE (a piece of text) whose text data is "world", and myTextNode is your reference to this node object. To insert this text into your HTML page, you need to make this text node a child of some other node element.

[编辑]

Inserting Elements with appendChild(..) 
So, by calling myP.appendChild([node_element]), you are making the element a new child of the second P element.

myP.appendChild(myTextNode);

After testing this sample, note that the words hello and world are together: helloworld. So visually, when you see the HTML page it seems like the two text nodes hello and world are a single node, but remember that in the document model, there are two nodes. The second node is a new node of type TEXT_NODE, and it is the second child of the second P tag. The following figure shows the recently created Text Node object inside the document tree.

Image:sample2b2.jpg

createTextNode and appendChild is a simple way to include white space between the words hello and world. Another important note is that the appendChild method will append the child after the last child, just like the word world has been added after the word hello. So if you want to append a Text Node between hello and world you will need to use insertBefore instead of appendChild.

[编辑]

Creating New Elements with the document object and the createElement(..) method 
You can create new HTML elements or any other element you want with createElement. For example, if you want to create a new P element as a child of the BODY element, you can use the myBody in the previous example and append a new element node. To create a node simply call document.createElement("tagname"). For example:

myNewPTAGnode=document.createElement("p");
myBody.appendChild(myNewPTAGnode);

Image:sample2c.jpg

[编辑]

Removing nodes with the removeChild(..) method 
Each node can be removed. The following line removes the text node which contains the word world of the myP (second P element).

myP.removeChild(myTextNode);

Finally you can add myTextNode (which contains the word world) into the recently created P element:

myNewPTAGnode.appendChild(myTextNode);

The final state for the modified object tree looks like this:

Image:sample2d.jpg

[编辑]

Creating a table dynamically (back to Sample1.html) 
For the rest of this article we will continue working with sample1.html. The following figure shows the table object tree structure for the table created in the sample.

[编辑]

Reviewing the HTML Table structure 
Image:sample1-tabledom.jpg

[编辑]

Creating element nodes and inserting them into the document tree 
The basic steps to create the table in sample1.html are:

Get the body object (first item of the document object). 
Create all the elements. 
Finally, append each child according to the table structure (as in the above figure). The following source code is a commented version for the sample1.html. 
At the end of the start function there is a new line of code. The table's border property was set using another DOM method, setAttribute. setAttribute has two arguments: the attribute name and the attribute value. You can set any attribute of any element using the setAttribute method.
<head>
<title>Sample code - Traversing an HTML Table with JavaScript and DOM Interfaces</title>
<script>
  function start() {
    // get the reference for the body
    var mybody=document.getElementsByTagName("body").item(0);
    // creates an element whose tag name is TABLE
    mytable = document.createElement("TABLE");
    // creates an element whose tag name is TBODY
    mytablebody = document.createElement("TBODY");
    // creating all cells
    for(j=0;j<2;j++) {
      // creates an element whose tag name is TR
      mycurrent_row=document.createElement("TR");
      for(i=0;i<2;i++) {
        // creates an element whose tag name is TD
        mycurrent_cell=document.createElement("TD");
        // creates a Text Node
        currenttext=document.createTextNode("cell is row "+j+", column "+i);
        // appends the Text Node we created into the cell TD
        mycurrent_cell.appendChild(currenttext);
        // appends the cell TD into the row TR
        mycurrent_row.appendChild(mycurrent_cell);
      }
      // appends the row TR into TBODY
      mytablebody.appendChild(mycurrent_row);
    }
    // appends TBODY into TABLE
    mytable.appendChild(mytablebody);
    // appends TABLE into BODY
    mybody.appendChild(mytable);
    // sets the border attribute of mytable to 2;
    mytable.setAttribute("border","2");
  }
</script>
</head>
<body onload="start()">
</body>
</html>

[编辑]

Manipulating the table with DOM and CSS

[编辑]

Getting a text node from the table 
This example introduces two new DOM attributes. First it uses the childNodes attribute to get the list of child nodes of mycel. The childNodes list includes all child nodes, regardless of what their name or type is. Like getElementsByTagName, it returns a list of nodes. The difference is that getElementsByTagName only returns elements of the specified tag name. Once you have the returned list, use item(x) method to retrieve the desired child item. This example stores in myceltext the text node of the second cell in the second row of the table. Then, to display the results in this example, it creates a new text node whose content is the data of myceltext and appends it as a child of the BODY element.

If your object is a text node, you can use the data attribute and retrieve the text content of the node.
mybody=document.getElementsByTagName("body").item(0);
mytable=mybody.getElementsByTagName("table").item(0);
mytablebody=mytable.getElementsByTagName("tbody").item(0);
myrow=mytablebody.getElementsByTagName("tr").item(1);
mycel=myrow.getElementsByTagName("td").item(1);
// first item element of the childNodes list of mycel
myceltext=mycel.childNodes.item(0);
// content of currenttext is the data content of myceltext
currenttext=document.createTextNode(myceltext.data);
mybody.appendChild(currenttext);

[编辑]

Getting an attribute value 
At the end of sample1 there is a call to setAttribute on the mytable object. This call was used to set the border property of the table. To retrieve the value of the attribute, use the getAttribute method:

mytable.getAttribute("border");

[编辑]

Hiding a column by changing style properties 
Once you have the object in your JavaScript variable, you can set style properties directly. The following code is a modified version of sample1.html in which each cell of the second column is hidden and each cell of the first column is changed to have a red background. Note that the style property was set directly.

<html>
<body onload="start()">
</body>
<script>
  function start() {
    var mybody=document.getElementsByTagName("body").item(0);
    mytable = document.createElement("TABLE");
    mytablebody = document.createElement("TBODY");
    for(j=0;j<2;j++) {
      mycurrent_row=document.createElement("TR");
      for(i=0;i<2;i++) {
        mycurrent_cell=document.createElement("TD");
        currenttext=document.createTextNode("cell is:"+i+j);
        mycurrent_cell.appendChild(currenttext);
        mycurrent_row.appendChild(mycurrent_cell);
        // set the cell background color
        // if the column is 0. If the column is 1 hide the cel
        if(i==0) {
          mycurrent_cell.style.background="rgb(255,0,0)";
        } else {
          mycurrent_cell.style.display="none";
        }
      }
      mytablebody.appendChild(mycurrent_row);
    }
    mytable.appendChild(mytablebody);
    mybody.appendChild(mytable);
  }
</script>
</html>

取自"http://developer.mozilla.org/cn/docs/%E4%BD%BF%E7%94%A8Javascript%E5%92%8CDOM_Interfaces%E6%9D%A5%E5%A4%84%E7%90%86HTML"

页面分类: DOM

(0)

相关推荐

  • 使用Javascript和DOM Interfaces来处理HTML

    1.创建表格 Sample code - Traversing an HTML Table with JavaScript and DOM Interfaces function start() { // get the reference for the body var mybody=document.getElementsByTagName("body").item(0); // creates an element whose tag name is TABLE mytable

  • JavaScript基于DOM操作实现简单的数学运算功能示例

    本文实例讲述了JavaScript基于DOM操作实现简单的数学运算功能.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"

  • JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系

    区别: javascript JavaScript 是因特网上最流行的浏览器脚本语言.很容易使用!你一定会喜欢它的! JavaScript 被数百万计的网页用来改进设计.验证表单.检测浏览器.创建cookies,以及更多的应用. HTML DOM HTML DOM 是 W3C 标准(是 HTML 文档对象模型的英文缩写,Document Object Model for HTML). HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法. 通过 D

  • javascript将DOM节点添加到文档的方法实例分析

    本文实例讲述了javascript将DOM节点添加到文档的方法.分享给大家供大家参考.具体如下: 这里对两种方法进行了比较:第一种:先创建所有节点,再添加到文档方式的运行时长:第二种:先向文档添加一个空容器,然后每创建一个节点,再添加到容器中方式的运行时长,从测试来看,第二种方法优于第一种! 运行效果如下图所示: 具体代码如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-eq

  • JavaScript之DOM插入更新删除_动力节点Java学院整理

    JavaScript之DOM插入更新删除,供大家参考,具体内容如下 更新 拿到一个DOM节点后,我们可以对它进行更新. 可以直接修改节点的文本,方法有两种: 一种是修改innerHTML属性,这个方式非常强大,不但可以修改一个DOM节点的文本内容,还可以直接通过HTML片段修改DOM节点内部的子树: // 获取<p id="p-id">...</p> var p = document.getElementById('p-id'); // 设置文本为abc: p.

  • JavaScript与DOM组合动态创建表格实例

    这篇文章简单介绍了DOM 1.0一些基本而强大的方法以及如何在JavaScript中使用它们.你可以学到如何动态地创建.获取.控制和删除HTML元素.这些DOM方法同样适用于XML.所有全面支持DOM 1.0的浏览器都能很好地运行本篇的实例,比如IE5,Firefox等. 这篇文章通过实例代码介绍DOM.请从尝试下面的HTML例子开始.它使用DOM 1的方法由JavaScript动态创建一个HTML表格.它创建一个由四个包含文本内容的单元格组成的小表格.单元格的文字内容是:"单元格是第y行第x列

  • JavaScript将DOM事件处理程序封装为event.js 出现的低级错误问题

    将 DOM 0级事件处理程序和DOM2级事件处理程序 IE事件处理程序封装为eventUtil对象,达到跨浏览器的效果.代码如下: var eventUtil = { // 添加事件句柄 addEventHandler:function (element,type,handler) { if (element.addEventListener) { element.addEventListener(type, handler,false); }else if(element.attachEven

  • javascript基于DOM实现权限选择实例分析

    本文实例讲述了javascript基于DOM实现权限选择的方法.分享给大家供大家参考.具体实现方法如下: <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>权限选择</title> &

  • Javascript操作dom对象之select全面解析

    html代码: <select id="university"> <option value="北京大学">北京大学</option> <option value="清华大学">清华大学</option> <option value="北京电影学院">北京电影学院</option> </select> js原生操作 1.获取sele

  • JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法

    本文实例讲述了JavaScript基于Dom操作实现查找.修改HTML元素的内容及属性的方法.分享给大家供大家参考,具体如下: 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model).HTML DOM 模型被构造为对象的树. 通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML.例如:改变HTML元素,改变HTML属性,改变CSS样式,事件响应. 效果图: 代码: <!DOCTYPE html PUBLIC "-//W3C

随机推荐