复制并分配文档对象的本机方法

时间:2016-07-27 20:53:29

标签: javascript html dom

我想对String对象执行document.getElementById()方法。

String.prototype.getElementById = document.getElementById;
test = new String('<p id="para1">Irgendein Text</p>');
console.log(test.getElementById("para1"))

上述尝试返回:Uncaught TypeError: Illegal invocation

有没有办法在字符串上执行getElementByID方法?

修改

谢谢你的魅力:

var test = (new DOMParser()).parseFromString('<dummy/>', 'text/xml');
test.getElementsByTagName('dummy')[0].innerHTML = '<p id="para1">Irgendein Text</p>';
console.log(doc.getElementById('para1'));

返回<p id="para1">Irgendein Text</p>

1 个答案:

答案 0 :(得分:2)

字符串不是文档,因此不能通过getElementById等DOM方法遍历。听起来你想将字符串视为dom选择,然后对其运行查询。 querySelector允许您对一大块DOM或整个文档运行查询,以便您可以使用它。 document.querySelector('#id')将生成与document.getElementById('id')相同的元素集。

将字符串转换为DOM的简单方法是将其设置为另一个元素的innerHTML。所以

var wrapper= document.createElement('div');
wrapper.innerHTML= '<p id="para1">Irgendein Text</p>';
console.log(wrapper.querySelector('#para1')); // your p tag

另见 Converting HTML string into DOM elements?

相关问题