为什么document.createTextNode()不允许setAttribute()?

时间:2016-10-20 09:54:48

标签: javascript

因此,在使用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

为什么会这样?有没有解决方法?

2 个答案:

答案 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');