nodeName/nodeValue 选取顺序问题

<p> 
      <span>paragraph1</span> 
      <span>paragraph2</span>
      <span><strong>paragraph3</strong></span> 
  </p> 
 
  <button type="button" name="button" onclick="getname()">点我</button> < script type = "text/javascript" >function getname() {
    var a = document.getElementsByTagName("p")[0];
    alert(a.innerHTML);
    alert(a.innerText);
    alert(a.firstChild.nodeName); //#text
    alert(a.firstChild.nodeValue);//null
    alert(a.lastChild.nodeValue);//null
}

查了好久没答案,特来请教
Q1:
.firstChild是特殊的唯一语法还是只用来选取第一个子元素?如果我要选取<p>中的<span>paragraph2</span>怎么做?
Q2:
查MDN,只给我一个答案:

"alert(a.firstChild.nodeName)将显示 '#text',因为在<p>标签和<span>标签之前,有一个换行符和多个空格充当了一个文本节点."

空格算一个节点?换行也算节点? 元素标签也算节点?文本也是节点?
我有点混乱,他们是混排的?他们都算 对象元素的子节点?那么他们的排列顺序是?


炎炎设计
浏览 464回答 1
1回答

蝴蝶刀刀

你试着打印a.childNodes就知道节点排列顺序了。如果只想选择第一个element元素节点,可以使用&nbsp;a.firstElementChild。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript