javascript 如何用类似createElement的方法通过一段html创建一个节点

需要一个函数比如叫newElement(t),能够实现如下功能参数是"<div>aaa</div>",那么他就返回一个<div>的节点,innerHTML是aaa参数是"... 需要一个函数比如叫newElement(t),能够实现如下功能
参数是"<div>aaa</div>",那么他就返回一个<div>的节点,innerHTML是aaa
参数是"<table><tbody><tr><td>abab</td></tr></tbody></table>"那么他就返回一个<table>的节点
参数是'<input name="username" type="text" value="" />'那么就返回一个有如上参数的<input>节点
如果里面不是个正常的html,可以返回任何东西都无所谓。
要求firefox或Chrome可以调试通过,IE无所谓。
不引入类库,谢谢。
展开
 我来答
chao919305
2012-01-18 · TA获得超过583个赞
知道小有建树答主
回答量:868
采纳率:0%
帮助的人:583万
展开全部
最开始我想到的方法和二楼一样,但是,实际操作了一下,不能解决类似<td><tr>这种问题。
火狐里<td><tr>如果位置写的不正确会被直接删除。例如:
<div id="testdiv" style="background:#c0c0c0;width:900px;height:100px;"><tr id="testtr">
11111111
</tr></div>
浏览器显示出来:
<div id="testdiv" style="background:#c0c0c0;width:900px;height:100px;">
11111111
</div>
这还是直接写页面源代码的情况。
appendChild();方法也一样,所以返回的只有:文本节点:”hello world“。
js有一种var temp = document.createDocumentFragment();临时存储节点,也是同样,会去掉<tr><td>。除非是向<table>元素中 appendChild()或innerHTML 否则都会被忽略。且只能是向<tr>下追加<td> 或者 向<table>下追加<tr>才有效。
你自己找正则去吧。又没分。
追问
正则式的我写了个能将就用的,就是不支持属性值罢了,其他的还好,我问只是觉得这个解法太ugly了……
var newElement = function (html) {
var tagname = html.replace(/^$/, '').replace(/^]*>(.*)]>$/, '$1');
return o;
}
xyq079656
2012-01-16 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:180
采纳率:0%
帮助的人:100万
展开全部
JQuery 符合你的要求
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ykxkknd6
2012-01-16
知道答主
回答量:36
采纳率:0%
帮助的人:18.7万
展开全部
function newElement(text){
var div = document.createElement("div");
div.innerHTML = text
return div.firstChild;
}
不知道你是不是要的这个
追问
给你组测试数据你试试:'hello, world',
运行结果,
如果要是写成这个样子就能用我不至于在这里问……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式