有没有一种方法可以创建一个DOM对象,给定其呈现的字符串
Is there a way to create a DOM object, given its rendered string?
有没有一种方法可以从整个字符串创建DOM对象,而不仅仅是innerHTML?我有一个完整呈现的DOM形式的字符串:
<some_tag_name class=... id=...>inner text</some_tag_name> (1)
并想直接从中创建一个DOM对象。我知道有一种方法可以做到:
e = document.createElement("some_tag_name")
e.innerHTML = ...
e.className = ...
e.id = ...
但当我这样做时,我必须从我拥有的字符串(1)中提取innerhtml部分,并分析标记类型和所有属性,并将其分别分配给e
。我想简单地从(1)形式的字符串中完成所有这些。
编辑
我遵循了答案,但这比一开始看起来更棘手。问题是,当你有一个代表tr
、td
等内容的字符串,并且你试图将其作为内部HTML放在临时创建的div
中时,浏览器会自动在其外部添加额外的标签。以下是我克服这个问题的解决方法,其中c
是字符串,e
是创建的元素:
var cTagName = c.match(new RegExp('[a-zA-Z]+'))[0].toUpperCase();
var e = document.createElement("div");
e.innerHTML = c;
e = e.children[0];
//// When the type of `e' does not match what `c' expects, the browser
//// automatically modifies the type of c. The following is to undo this.
if(e.tagName.toUpperCase() != cTagName){
e = document.createElement("table");
e.innerHTML = c;
e = e.children[0];
};
if(e.tagName.toUpperCase() != cTagName){
e = document.createElement("tbody");
e.innerHTML = c;
e = e.children[0];
};
if(e.tagName.toUpperCase() != cTagName){
e = document.createElement("tr");
e.innerHTML = c;
e = e.children[0];
};
您可以随时执行:
var div = document.createElement("div");
div.innerHTML = "<some> ... </some>"
var e = div.children[0];
(或者,如果您使用的是jQuery,只需$("<some ... >")[0]
)。
您正在查找outerHTML
属性。
var el = document.createElement('tag');
document.body.appendChild(el); // The element must be appended to the DOM before
// setting outerHTML. Otherwise, it will throw a
// NO_MODIFICATION_ALLOWED_ERR.
el.outerHTML='<some_tag_name class=... id=...>inner text</some_tag_name>';
考虑到Firefox在这方面有点落后,创建一个包装器div
并设置其innerHTML
可能更安全。
var el = document.createElement('div');
el.innerHTML = '<some_tag_name class=... id=...>inner text</some_tag_name>';
您可以使用jQuery:
var myDiv = $('<div class="my-div">This is my div!</div>');
相关文章:
- 字符串对象类型或基元类型也是如此
- Javascript-如何从字符串/对象引用回调
- JavaScript,字符串/对象操作的例外
- 如何在require中传递字符串/对象
- 字符串对象比较总是返回false
- 对字符串对象调用 .localeCompare 与构造特制的 Intl.Collator 对象之间的性能差异
- 将变量打印到控制台时出现意外字符串:[对象窗口]
- 如何使用javascript在字符串对象中添加原型
- 如何在 JavaScript 中设置/更新字符串对象的值
- jQuery:在 $.each 中从字符串类型转换为字符串对象
- 将属性添加到字符串对象时出现问题
- 从字符串对象中删除第一个出现的字母
- 如何正确地将JQuery函数从表单的输入标记中检索到的这些字符串对象转换为数字
- 转换“;字符串对象“;到对象
- Javascript中字符串对象到字符串原语的转换
- JavaScript符号类型:(非字符串对象键)
- 正在重新定义字符串对象中的长度属性
- 带有字符串对象的jQuery选择器不起作用
- 如何在javascript中将JSON字符串对象打印为下拉列表
- 将日期字符串对象转换为其他格式