Javascript 如何获取.nodeType属性以显示2?

Javascript 如何获取.nodeType属性以显示2?,javascript,dom,document,nodes,Javascript,Dom,Document,Nodes,HTML 我想检索属性nodeType,为什么我会得到未定义的 还有,有没有更好的方法来检索textNode,不使用firstChild,而是使用其他方法 元素.id包含一个字符串值。该字符串没有节点类型 也许,如果您解释您真正想要解决的问题,我们可以帮助您解释为什么您感到困惑,并试图在字符串上获取节点类型 文本节点是元素的子对象。如果您知道只有一个文本节点,那么元素。firstChild是检索它的一种方法。如果希望对象中的所有文本(而不是实际的文本节点),则可以使用element.textCo

HTML

我想检索属性nodeType,为什么我会得到未定义的


还有,有没有更好的方法来检索textNode,不使用firstChild,而是使用其他方法

元素.id
包含一个字符串值。该字符串没有
节点类型

也许,如果您解释您真正想要解决的问题,我们可以帮助您解释为什么您感到困惑,并试图在字符串上获取
节点类型

文本节点是元素的子对象。如果您知道只有一个文本节点,那么
元素。firstChild
是检索它的一种方法。如果希望对象中的所有文本(而不是实际的文本节点),则可以使用
element.textContent
(或者在旧版本的IE中使用
element.innerText

你经常需要小心文本节点,因为一些浏览器(是的,我指的是IE)会在文本节点中单独放置回车符,并且可能会出现比你预期的更多的文本节点,这仅仅取决于HTML的格式(尽管它在显示上没有什么区别)。因此,仅假设
标题
文本位于
元素.firstChild中并不是最健壮的代码。这就是
element.textContent
如果只需要文本,而不是实际的文本节点,那么它将更加容易和健壮

下面是一个简单的跨浏览器函数,它将获取元素的文本:

var element = document.getElementById("title");

console.log(element.nodeType);  // 1
console.log(element.id.nodeType); // undefined
console.log(element.firstChild.nodeType); // 3
或者,如果希望第一个子文本节点中包含除空白以外的内容,请执行以下操作:

function getElementText(el) {
   if (typeof el.textContent !== "undefined") {
       return el.textContent;
   }
   return el.innerText;
}

element.id
包含一个字符串值。该字符串没有
节点类型

也许,如果您解释您真正想要解决的问题,我们可以帮助您解释为什么您感到困惑,并试图在字符串上获取
节点类型

文本节点是元素的子对象。如果您知道只有一个文本节点,那么
元素。firstChild
是检索它的一种方法。如果希望对象中的所有文本(而不是实际的文本节点),则可以使用
element.textContent
(或者在旧版本的IE中使用
element.innerText

你经常需要小心文本节点,因为一些浏览器(是的,我指的是IE)会在文本节点中单独放置回车符,并且可能会出现比你预期的更多的文本节点,这仅仅取决于HTML的格式(尽管它在显示上没有什么区别)。因此,仅假设
标题
文本位于
元素.firstChild中并不是最健壮的代码。这就是
element.textContent
如果只需要文本,而不是实际的文本节点,那么它将更加容易和健壮

下面是一个简单的跨浏览器函数,它将获取元素的文本:

var element = document.getElementById("title");

console.log(element.nodeType);  // 1
console.log(element.id.nodeType); // undefined
console.log(element.firstChild.nodeType); // 3
或者,如果希望第一个子文本节点中包含除空白以外的内容,请执行以下操作:

function getElementText(el) {
   if (typeof el.textContent !== "undefined") {
       return el.textContent;
   }
   return el.innerText;
}
在DOM中,是为属性保留的。可以使用父节点的
属性
属性检查这些节点

function getFirstTextNode(el) {
    var child = el.firstChild;
    while (child) {
        if (child.nodeType === 3 && child.nodeValue.replace(/\s/g, "") !== "") {
            return child;
        }
        child = child.nextSibling;
    }
    return null;
}
在DOM中,是为属性保留的。可以使用父节点的
属性
属性检查这些节点

function getFirstTextNode(el) {
    var child = el.firstChild;
    while (child) {
        if (child.nodeType === 3 && child.nodeValue.replace(/\s/g, "") !== "") {
            return child;
        }
        child = child.nextSibling;
    }
    return null;
}

+1我不知道属性是基于数组的@压碎它只是得到它的值,但我想要2@kozlovski5
attributes
属性实际上不是一个数组,但是a并不是
属性中的所有内容
NamedNodeMap
将成为节点类型2?+1我不知道属性是基于数组的@压碎它只是得到它的值,但我想要2@kozlovski5
attributes
属性实际上不是数组,但a不是
attributes
NamedNodeMap
中的所有内容都将成为节点类型2?@crush我尝试了这个,但它给出了一个未定义的数组。@crush我尝试了这个,但它给了我一个未定义的答案。为什么投反对票?这是一个完全正确的答案,解释了为什么他们得到了未定义的
。如果OP解释了他们实际上想做什么,而不是让我们去猜测,那么我们可能会更有帮助。在问题的第二部分添加了信息-检索文本节点。为什么要投否决票?这是一个完全正确的答案,解释了为什么他们得到了未定义的
。如果OP解释了他们实际上想做什么,而不是让我们去猜测,那么我们可能会更有帮助。添加了问题第二部分的信息-检索文本节点。