Javascript textNode是否可以具有作为elementNode的childNode?
比如说,是否有以下可能:Javascript textNode是否可以具有作为elementNode的childNode?,javascript,dom,Javascript,Dom,比如说,是否有以下可能: textNode.appendChild(elementNode); elementNode指的是nodeType设置为1的节点 textNode指的是nodeType设置为2的节点 这不容易生产 我问这个问题的原因是,我发现一个函数在引用的末尾添加了一个引用链接: function displayCitations() { var quotes = document.getElementsByTagName("blockquote"); for (var i
textNode.appendChild(elementNode);
elementNode
指的是nodeType
设置为1的节点
textNode
指的是nodeType
设置为2的节点
这不容易生产
我问这个问题的原因是,我发现一个函数在引用的末尾添加了一个引用链接:
function displayCitations() {
var quotes = document.getElementsByTagName("blockquote");
for (var i=0; i<quotes.length; i++) {
if (!quotes[i].getAttribute("cite")) continue;
var url = quotes[i].getAttribute("cite");
var quoteChildren = quotes[i].getElementsByTagName('*');
if (quoteChildren.length < 1) continue;
var elem = quoteChildren[quoteChildren.length - 1];
var link = document.createElement("a");
var link_text = document.createTextNode("source");
link.appendChild(link_text);
link.setAttribute("href",url);
var superscript = document.createElement("sup");
superscript.appendChild(link);
elem.appendChild(superscript);
}
}
函数显示引用(){
var quotes=document.getElementsByTagName(“blockquote”);
对于(var i=0;i我不这么认为;我相当肯定
<div>this is some <a href="...">text</a> with an element inside it.</div>
这是一个包含元素的示例。
结果是:
<div>
<textnode/>
<a>
<textnode/>
</a>
<textnode/>
</div>
我不相信我能有孩子
如果我不得不猜测,我会认为将子节点添加到文本节点的结果将是将元素添加到文本节点的父节点,但我根本没有对此进行测试。否。元素可能包含属性、其他元素或文本。否,文本节点总是叶子。相反,必须将新节点添加到文本节点的父节点-使它们成为文本节点的同级
<div id="test">my only child is this text node</div>
<script type="text/javascript">
var div = document.getElementById( 'test' );
var textNode = div.childNodes[0];
var superscript = document.createElement("sup");
superscript.text = 'test';
textNode.appendChild( superscript );
</script>
编辑
下面是一个示例,我尝试将一个子节点添加到文本节点
<div id="test">my only child is this text node</div>
<script type="text/javascript">
var div = document.getElementById( 'test' );
var textNode = div.childNodes[0];
var superscript = document.createElement("sup");
superscript.text = 'test';
textNode.appendChild( superscript );
</script>
我唯一的孩子就是这个文本节点
var div=document.getElementById('test');
var textNode=div.childNodes[0];
var上标=document.createElement(“sup”);
上标文本=‘测试’;
textNode.appendChild(上标);
Firefox给出了错误
未捕获异常:节点不能为空
在中的指定点插入
等级制度
(NS\u错误\u DOM\u层次结构\u请求\u错误)
正确。元素是文本节点的兄弟节点,而不是子节点。那么上面的代码是错误的吗?这是我在回答末尾添加了一点的书中的代码——我不认为这是错误的,我认为DOM会在那里做正确的事。你的意思是将子节点附加到文本节点与将其附加到其父节点是一样的吗?这是我的猜测。但是,这是正确的尽管有些代码完全错了,但这不是第一次出现在书中。:)结论与中的代码冲突。我不确定您在评论中引用了什么,但我添加了一个片段来备份我的语句。IE的javascript错误很少有用,这种情况也不例外。“对方法或属性访问的意外调用”。但它确实报告了正确的行号。否-在本例中,elem
不能是textNode。数组quoteChildren
通过HTMLElement.getElementsByTagName()填充它不返回文本节点。elem
是quoteChildren
中的最后一个值。对,我发现了我的错误。但这个问题仍然值得回答,对吗?你是否尝试将elementNode附加到textNode?是的,以前从未尝试过,但练习起来很简单。检查下面的答案。