js dom 生成及一些用法

//解释文件

function loadXMLDoc(dname) 

{

try //Internet Explorer

  {

  xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

  }

catch(e)

  {

  try //Firefox, Mozilla, Opera, etc.

    {

    xmlDoc=document.implementation.createDocument("","",null);

    }

  catch(e) {alert(e.message)}

  }

try 

  {

  xmlDoc.async=false;

  xmlDoc.load(dname);

  return(xmlDoc);

  }

catch(e) {alert(e.message)}

return(null);

}

 

//解释字符

function loadTxtXMLDoc(dname) 

{

var xmlDoc;

try //Internet Explorer

 {

 xmlDoc=new ActiveXObject("Microsoft.XMLDOM");

 xmlDoc.async="false";

 xmlDoc.loadXML(text);

 return xmlDoc;

 }

catch(e)

 {

 try //Firefox, Mozilla, Opera, etc.

   {

   parser=new DOMParser();

   xmlDoc=parser.parseFromString(text,"text/xml");

   return xmlDoc;

   }

 catch(e) {alert(e.message); reutnr null;}

 }

}

 

 

/**

========================

 XML DOM 属性

 

一些典型的 DOM 属性:

 

    x.nodeName - x 的名称

    x.nodeValue - x 的值

    x.parentNode - x 的父节点

    x.childNodes - x 的子节点

    x.attributes - x 的属性节点

    注释:在上面的列表中,x 是一个节点对象。

 

========================== 

  XML DOM 方法

 

    x.getElementsByTagName(name) - 获取带有指定标签名称的所有元素

    x.appendChild(node) - 向 x 插入子节点

    x.removeChild(node) - 从 x 删除子节点

 

注释:在上面的列表中,x 是一个节点对象。

============================

遍历节点

 

下面的代码循环根节点的子节点,同时也是元素节点:

 

xmlDoc=loadXMLDoc("books.xml");

 

x=xmlDoc.documentElement.childNodes;

 

for (i=0;i<x.length;i++)

  if (x[i].nodeType==1)

  {//Process only element nodes (type 1) 

  document.write(x[i].nodeName);

  document.write("<br />");

  } 

}

======================================

nodeType 属性

 

nodeType 属性规定节点的类型。

 

nodeType 是只读的。

最重要的节点类型是:

元素类型 节点类型

元素 1

属性 2

文本 3

注释 8

文档 9

==========================================

实例1

 

从 books.xml 中的 <title> 元素获取文本的 JavaScript 代码:

 

txt=xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue

======================================

解析 XML 字符串 - 跨浏览器实例2

 

下面的代码加载并解析一个 XML 字符串:

 

下面的代码片段使用 loadXMLString 函数把 books.xml 载入 XML 解析器,并显示第一个 book 的数据:

 

text="<bookstore>"

text=text+"<book>";

text=text+"<title>Harry Potter</title>";

text=text+"<author>J K. Rowling</author>";

text=text+"<year>2005</year>";

text=text+"</book>";

text=text+"</bookstore>";

 

xmlDoc=loadXMLString(text);

 

document.write(xmlDoc.getElementsByTagName("title")

[0].childNodes[0].nodeValue);

document.write("<br />");

document.write(xmlDoc.getElementsByTagName("author")

[0].childNodes[0].nodeValue);

document.write("<br />");

document.write(xmlDoc.getElementsByTagName("year")

[0].childNodes[0].nodeValue);

 

===========================================

Node List Length

 

NodeList 对象会保持自身的更新。如果删除或添加了元素,列表会自动更新。

 

节点列表的 length 属性是列表中节点的数量。

 

下面的代码片段通过使用 loadXMLDoc() 把 "books.xml" 载入 xmlDoc,并返回 "books.xml" 中 <title> 元素的数量:

 

xmlDoc=loadXMLDoc("books.xml");

 

x=xmlDoc.getElementsByTagName('title').length;

 

在上面的语句执行之后,x = 4。

 

节点列表的长度可用于循环列表中所有的元素。

 

下面的代码片段使用 length 属性来遍历 <title> 元素的列表:

 

xmlDoc=loadXMLDoc("books.xml");

 

//the x variable will hold a node list

x=xmlDoc.getElementsByTagName('title');

 

for (i=0;i<x.length;i++)

{

document.write(x[i].childNodes[0].nodeValue);

document.write("<br />");

}

==========================================

DOM Attribute List (Named Node Map)

 

元素节点的 attributes 属性返回属性节点的列表。

 

这被称为 Named Node Map,除了方法和属性上的一些差别以外,它与节点列表相似。

 

属性列表会保持自身的更新。如果删除或添加属性,这个列表会自动更新。

 

下面的代码片段通过使用 loadXMLDoc() 把 "books.xml" 载入 xmlDoc 中,并从 "books.xml" 中的第一个 <book> 元素返回属性节点的一个列表:

 

xmlDoc=loadXMLDoc("books.xml");

 

x=xmlDoc.getElementsByTagName('book')[0].attributes;

 

以上代码执行之后,x.length 等于属性的数量,可使用 x.getNamedItem() 返回属性节点。

 

下面的代码片段一个 book 的 "category" 属性的值,以及其属性的数量:

 

xmlDoc=loadXMLDoc("books.xml");

 

x=xmlDoc.getElementsByTagName("book")[0].attributes;

 

document.write(x.getNamedItem("category").nodeValue);

document.write("<br />" + x.length);

============================================

获取属性的值

 

在 DOM 中,属性也是节点。与元素节点不同,属性节点拥有文本值。

 

获取属性的值的方法,就是获取它的文本值。

 

可以通过使用 getAttribute() 方法或属性节点的 nodeValue 属性来完成这个任务。

获取属性值 - getAttribute()

 

getAttribute() 方法返回属性的值。

 

下面的代码检索第一个 <title> 元素的 "lang" 属性的文本值:

 

xmlDoc=loadXMLDoc("books.xml");

 

txt=xmlDoc.getElementsByTagName("title")[0].getAttribute("lang");

 

结果:txt = "en"

例子解释:

 

   通过使用 loadXMLDoc() 把 "books.xml" 载入 xmlDoc 中

   把 txt 变量设置为第一个 title 元素节点的 "lang" 属性的值

 

TIY

 

遍历所有 <book> 元素,并获取它们的 "category" 属性:TIY

获取属性值 - getAttributeNode()

 

getAttributeNode() 方法返回属性节点。

 

下面代码检索第一个 <title> 元素的 "lang" 属性的文本值:

 

xmlDoc=loadXMLDoc("books.xml");

 

x=xmlDoc.getElementsByTagName("title")[0].getAttributeNode("lang");

txt=x.nodeValue;

 

结果:txt = "en"

例子解释:

 

   通过使用 loadXMLDoc() 把 "books.xml" 载入 xmlDoc 中

   获取第一个 <title> 元素节点的 "lang" 属性节点

   把 txt 变量设置为属性的值

==========================================

DOM - 空白和换行

 

XML 经常在节点之间含有换行或空白字符。这是在使用简单的编辑器(比如记事本)时经常出现的情况。

 

下面的例子(由记事本编辑)在每行之间含有 CR/LF,在每个子节点之前含有两个空格:

 

<book>

 <title>Harry Potter</title>

 <author>J K. Rowling</author>

 <year>2005</year>

 <price>29.99</price>

</book>

 

Firefox,以及其他一些浏览器,会把空的空白或换行作为文本节点来处理,而 Internet Explorer 不会这样。

 

下面的代码片段显示 (books.xml 的) 根元素拥有多少个子节点:

 

xmlDoc=loadXMLDoc("books.xml");

 

x=xmlDoc.documentElement.childNodes;

document.write("Number of child nodes: " + x.length);

 

-----------------------------------

忽略节点间的空文本

 

如需忽略元素节点之间的空文本节点,需要检查节点类型。元素节点的类型是 1:

 

xmlDoc=loadXMLDoc("books.xml");

 

x=xmlDoc.documentElement.childNodes;

 

for (i=0;i<x.length;i++)

if (x[i].nodeType==1)

 {// only process element nodes 

 document.write(x[i].nodeName);

 document.write("<br />");

 } 

}

========================================================

 */

 

/**

===========================================

 DOM 实例

 

请看下面的 XML 文件 (books.xml):

 

<?xml version="1.0" encoding="ISO-8859-1"?>

 

<bookstore>

 

<book category="children">

  <title lang="en">Harry Potter</title> 

  <author>J K. Rowling</author> 

  <year>2005</year> 

  <price>29.99</price> 

</book>

 

<book category="cooking">

  <title lang="en">Everyday Italian</title> 

  <author>Giada De Laurentiis</author> 

  <year>2005</year> 

  <price>30.00</price> 

</book>

 

<book category="web">

  <title lang="en">Learning XML</title> 

  <author>Erik T. Ray</author> 

  <year>2003</year> 

  <price>39.95</price> 

</book>

 

<book category="web">

  <title lang="en">XQuery Kick Start</title> 

  <author>James McGovern</author> 

  <author>Per Bothner</author> 

  <author>Kurt Cagle</author> 

  <author>James Linn</author> 

  <author>Vaidyanathan Nagarajan</author> 

  <year>2003</year> 

  <price>49.99</price> 

</book>

 

</bookstore>

============================================

 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用JavaScript的DOM(文档对象模型)来动态生成HTML内容。具体而言,可以通过JavaScript代码创建新的HTML元素,并将它们添加到现有的HTML文档中。以下是一个简单的示例,演示如何使用DOM动态生成HTML内容: ```html <!DOCTYPE html> <html> <head> <title>动态生成HTML内容示例</title> </head> <body> <h1 id="title"></h1> <p id="content"></p> <script> var title = "动态生成HTML内容"; var content = "这是一个使用JavaScript DOM动态生成HTML内容的示例。"; // 创建新的HTML元素 var titleElement = document.createElement("h1"); var contentElement = document.createElement("p"); // 设置元素属性和内容 titleElement.setAttribute("id", "title"); titleElement.innerHTML = title; contentElement.setAttribute("id", "content"); contentElement.innerHTML = content; // 将元素添加到现有的HTML文档中 document.body.appendChild(titleElement); document.body.appendChild(contentElement); </script> </body> </html> ``` 在这个例子中,我们首先在HTML页面中定义了两个`<h1>`和`<p>`标签,分别用于显示标题和内容。然后,在JavaScript代码中,我们定义了两个变量`title`和`content`,用于存储标题和内容的文本。接下来,我们使用`document.createElement()`方法创建了两个新的HTML元素`titleElement`和`contentElement`。然后,我们使用`setAttribute()`方法设置了元素的属性`id`,并使用`innerHTML`属性设置了元素的内容。最后,我们使用`appendChild()`方法将新元素添加到现有的HTML文档中。运行该代码后,将动态生成一个带有标题和内容的HTML页面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值