怎样用原生 JavaScript 把字符串解析为 DOM 对象

JavaScript010

怎样用原生 JavaScript 把字符串解析为 DOM 对象,第1张

首先,你的问题太模糊,不好理解。最好举个例子,把什么样的字符串解析成DOM对象?

如果是要把HTML文本字符串转换成DOM对象。

下面的这个函数就可以:

function parseToDOM(str){

   var div = document.createElement("div")

   if(typeof str == "string")

       div.innerHTML = str

   return div.childNodes

}

参数:

       str : HTML文本字符串.

返回值:

        所需要的DOM对象,以Array形式返回(事实上是近似Array的Node List).

用法:

       var nodelist = parseToDOM("<b>hello world</b>")

你的这个javascript脚本通常会在一个HTML页面里面运行。所以如果你的字符串里面没有<html>标签,直接就是内容<input type='text' value='123' id='test'>,那么可以通过doucment.createElement创建一个div,然后把这个div的innerHTML设置成你的字符串。再把这个div append到doucmnet下面人任何一个元素里(通常就是body元素),这样就可以document.getElementById来获取了。用完之后如果不需要了,再从dom tree里把这个元素移除掉,或者就把这个div设置为display="None"就好

但是如果这个字符串是完整的HTML,包括<html><head><body>等标签,那么就需要创建一个新的iframe,把这个iframe的innerHTML设置成你的字符串,然后通过iframe的document的getElementById来获取。

可以使用eval()方法。

eval函数接收一个参数s,如果s不是字符串,则直接返回s。否则执行s语句。如果s语句执行结果是一个值,则返回此值,否则返回undefined。

下面是具体用法:

var code1='"a" + 2'//表达式

var code2='{a:2}'//语句

alert(eval(code1))//->'a2'

alert(eval(code2))//->undefined

//json字符串使用eval('('+string+')')方法转换成js对象。

alert(eval('(' + code2 + ')'))//->[object object]转换成对象。