因此,在使用dom时,我遇到了这样的情况:我假设document.createTextNode()
产生的对象将以与document.createElement();
产生的对象类似的方式处理,因为我会能够在其上拨打setAttribute()
。
示例:
var genericElementNode = document.createElement('p');
genericElementNode.setAttribute('id', 'sampleId1');
// The above will run fine
var textNode = document.createTextNode("Hello World");
textNode.setAttribute('id', 'sampleId2');
//The above will result in an error:
//Uncaught TypeError: textNode.setAttribute is not a function
为什么会这样?有没有解决方法?
答案 0 :(得分:1)
你无法设置/获取textNode的任何属性/元素
有没有解决方法?
很容易说出在span
中创建元素并设置文本
var genericElementNode = document.createElement('p');
genericElementNode.setAttribute('id', 'sampleId1');
// The above will run fine
var textNode = document.createElement("span");
textNode.innerText = "Hello World";
textNode.setAttribute('id', 'sampleId2');
答案 1 :(得分:1)
document.createTextNode
正好返回...一个文本节点,它继承自Node
。这没有setAttribute
方法。
可以使用Element
创建的document.createElement
也继承自Node
,但它还有更多方法,包括setAttribute
。
正如@Mamdouh Freelancer所述,您可以使用内联级别元素,例如span
。
var textNode = document.createElement('span');
textNode.textContent = 'Hello world';
textNode.setAttribute('id', 'sampleId2');