Mik*_*e P 4 html javascript textnode
反正有没有为textNode分配一个id,然后通过该id检索该文本节点?我已经尝试了几种不同的方法,并继续得到错误,说不能获得null的属性.
我的代码看起来像这样......
var myDiv = document.createdElement('div');
myDiv.id = "textContainer";
var textNode = document.createdTextNode("some text");
textNode.id = "descriptionText";
myDiv.appendChild(textNode);
Run Code Online (Sandbox Code Playgroud)
在这一点上工作得很好; 它显示在页面上.后来我尝试修改那个文本节点,这就是我得到错误的地方.
var tempNode = document.getElementById(descriptionText);
descriptionText.value = "new text";
Run Code Online (Sandbox Code Playgroud)
这是不行的.我已尝试变量,如文本节点用tagName,数据等命名,我得到相同的错误.那么,是不是可以命名和检索文本节点?还有下一个创建新文本节点并替换旧文本节点的最佳解决方案?
文本没有id的属性,因此当您将节点写入DOM时,它不再以这种方式访问.您在JavaScript(Text对象)中创建的内容不直接与像HTMLElement这样的DOM元素相关联.
事实上,它甚至不被认为是父母的孩子,而是父母的孩子textContent.请注意,textContent它来自一个继承自a的元素Node.
您可以在创建对象时为其指定"id",因为所有对象都只是对象,但是当您将其放入DOM时,所有非标准内容都会消失.
如果你测试你父元素的子元素:
myDiv.children.length;
Run Code Online (Sandbox Code Playgroud)
您将看到(如果没有其他子项)您添加的文本节点作为属性"吸收"到父级中.
这是一个小小的jsfiddle演示.
旁注:这是对浏览器中文本处理方式的过度简化.我不知道如果我把它称为毛过于简单,但它是一个无论哪种方式.
应该注意的是,Text继承自CharacterData,而CharacterData又继承自Node.但是,这些是接口,它限制了可用方法/属性的范围.
此外,文本节点是永远无法通过标识或标签在DOM访问,但.MDN页面Node.normalize清楚地演示了如何通过childNodes只读nodeList提供这些节点.
虽然将这些东西放在后面的口袋中很有用,但在日常使用的节点和规范化以及CharacterData的上下文中考虑Text可能并不重要.
| 归档时间: |
|
| 查看次数: |
3054 次 |
| 最近记录: |