标签: nodelist

DOM getElementsByTagName()返回具有NULL值的节点

我有一个XML文件如下.

当我使用getElementsByTagName("LEVEL2_ID"),我得到一个NodeListNodes,但这些节点有NULL值(换句话说,getNodeValue()每个节点的结果将返回NULL).为什么是这样?在这种情况下,我需要获取每个节点的内容值2000.

XML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
    <Date>01/17/2012</Date>
    <LEVEL1>
        <LEVEL1_ID>1000</LEVEL1_ID>

        <LEVEL2>
           <LEVEL2_ID>2000</LEVEL2_ID>
        </LEVEL2>
    </LEVEL1>
</Root>
Run Code Online (Sandbox Code Playgroud)

在Java中,打印使用getElementsByTagName()获取的第一个节点的将返回NULL:

NodeList nodes = document.getElementsByTagName("LEVEL2_ID");

System.out.println("Value of 1st node: " + nodes.item(0).getNodeValue());
Run Code Online (Sandbox Code Playgroud)

java xml dom nodelist

5
推荐指数
1
解决办法
2万
查看次数

理解 javascript DOM 核心思想:nodeList 与 HTMLElement 对象

我一直致力于非常彻底地理解 DOM。目前我正在遍历 DOM 树,似乎发现了一些不一致的地方。

  • 在节点列表上,我可以使用索引来迭代列表
  • 在 HTMLElement 上我无法使用索引

请参阅此小提琴的示例:http ://jsfiddle.net/AmhVk/4/

那么问题来了,为什么nodeList有像element[0]、element 1这样的可索引列表,而HTMLElement却没有?

有人可以非常彻底地向我解释这一点吗?谢谢...

<ul id="jow">
    <li><a href="">Item</a></li>    
    <li><a href="">Item</a></li>
    <li class="active"><a href="">Item</a></li> 
    <li class="active"><a href="">Item</a></li> 
    <li><a href="">Item</a></li>
    <li><a href="">Item</a></li>
</ul>

<div id="ieps"></div>
Run Code Online (Sandbox Code Playgroud)
<ul id="jow">
    <li><a href="">Item</a></li>    
    <li><a href="">Item</a></li>
    <li class="active"><a href="">Item</a></li> 
    <li class="active"><a href="">Item</a></li> 
    <li><a href="">Item</a></li>
    <li><a href="">Item</a></li>
</ul>

<div id="ieps"></div>
Run Code Online (Sandbox Code Playgroud)

另外,在小提琴中,如果我删除 1 个包含“active”类的 li。这仍然会返回一个 nodeList 而不是单个 HTMLElement:jsfiddle.net/AmhVk/5

javascript dom nodelist tree-traversal

4
推荐指数
1
解决办法
2104
查看次数

for ... in循环不循环遍历所有属性?

当我加载页面时,会创建一个nodeList,它看起来像这样:

[text, h4, text, span, br, input, br, span, br, input, br, span, br, input, br, span, br, input, br]
Run Code Online (Sandbox Code Playgroud)

我创建了一个for循环遍历所有这些元素的简单循环,并从DOM中删除它们中的每一个.(所有元素都在a <section>)

这是循环:

        for(element in videoTitlesElement.childNodes){
            if(!isNaN(element)){
                videoTitlesElement.removeChild(
                        videoTitlesElement.childNodes[element]);
            }
        }
Run Code Online (Sandbox Code Playgroud)

但是,在循环结束时,nodeList如下所示:

[h4, span, input, span, input, span, input, span, input]
Run Code Online (Sandbox Code Playgroud)

并非所有元素都被删除.为什么?

谢谢.

javascript for-loop nodelist for-in-loop

4
推荐指数
1
解决办法
155
查看次数

如果我不需要结果列表中的CSS选择器的粒度,为什么我会想要在"实时"NodeList上使用静态NodeList/HTMLCollection?

我通常会听到,因为实时NodeLists是"坏" (参见这篇Zakas文章),并且通知了querySelectorAll返回静态的决定HTMLCollection.为什么人们认为实时NodeLists是一件坏事?代码示例可能有助于我理解这一点.

如果,每当我关心使用缓存的节点集合的值进行任何计算时,集合恰好不是一个陈旧的快照,我就不能真正看到它是一个"坏"的东西.

我完全理解用CSS Selector字符串选择元素有多么有用,但如果我只能在获取它后立即可靠地运行代码,那么它似乎比live更有用NodeList.

javascript dom nodelist selectors-api

3
推荐指数
1
解决办法
2081
查看次数

是否所有HTML节点都具有“ getElementsBy”和“ getElementBy”版本?

我正在学习香草js,并且不断出现的是,我看到一些示例代码,例如document.getElementBy ...或document.getElement(s)By ...,是每个HTML节点都有一个对应的js dom形式,其中getElementBy指向单个节点,而getElementsBy指向nodeList?

javascript html5 nodelist

3
推荐指数
1
解决办法
7034
查看次数

Javascript slice()不是我的li元素列表的函数

如何将以下jquery转换为javascript?

iElement.children('li')
.css({ "background": "#DDD" })
.slice(0, 1)
.css({ "background": c.col });
Run Code Online (Sandbox Code Playgroud)

IElement.children('li') 返回以下内容:

 [li.point, li.point, li.point, li.point, li.point]
Run Code Online (Sandbox Code Playgroud)

这里iElement是一个ul.

问题来自于slice().iElement是一个对象数组,但我得到一个错误,说这whatever.slice()不是一个函数

我正在尝试为我的angularjs应用程序编写密码强度指令.

javascript arrays object nodelist angularjs

3
推荐指数
1
解决办法
3249
查看次数

在NodeList上使用'for ... of'时,Edge 15会引发错误

在查看ECMAScript兼容性表时,它表示Edge 15和Edge 16支持for ... of循环.

但是,当我运行此代码时:

const list = document.querySelectorAll('[data-test]');
console.log(list);

for (const item of list) {
  console.log(item);
}
Run Code Online (Sandbox Code Playgroud)
<div data-test></div>
<div data-test></div>
<div data-test></div>
<div data-test></div>
<div data-test></div>
Run Code Online (Sandbox Code Playgroud)

它适用于Chrome和Firefox,但不适用于Edge.相反它说:

Object不支持属性或方法'Symbol.iterator'.

据我了解,NodeList实际上应该支持它,对吗?

这是一个自己尝试的fildde:在线测试

有人可以在这里解释问题或错误吗?

javascript nodelist ecmascript-6 microsoft-edge

3
推荐指数
1
解决办法
1007
查看次数

如何测试两个NodeList的相等性?

假设我有一个自定义函数,我希望它将返回一个NodeList:

getNodeList('foo');

我希望此NodeList与从以下返回的NodeList相同:

document.querySelectorAll('.foo');

如何检查我的期望是正确的?

这样做不起作用:

getNodeList('foo') == document.querySelectorAll('.foo')
Run Code Online (Sandbox Code Playgroud)

我敢肯定有一个很好的技术原因为什么它不起作用,因为它document.querySelectorAll('.foo') == document.querySelectorAll('.foo')也不起作用,所以我认为这是可以预期的。

如何测试两个NodeList是否包含相同的HTML节点?

javascript object nodelist

3
推荐指数
1
解决办法
300
查看次数

NodeList.length 始终返回 0

我有一个 NodeList 对象,它是由

var buttons = document.getElementsByName("signupButton");

console.log(buttons);
Run Code Online (Sandbox Code Playgroud)

印刷

[item: function]
0: button.btn.btn-warning.btn-lg
1: button.btn.btn-warning.btn-lg
2: button.btn.btn-warning.btn-lg
length: 3
__proto__: NodeList
Run Code Online (Sandbox Code Playgroud)

但是buttons.length打印的是0。这是怎么回事?

javascript nodelist

2
推荐指数
1
解决办法
7666
查看次数

将新的XML节点保存到文件

我正在尝试保存nodeList包含XML为新文件的节点,这里是获取新XML文档并拆分为较小的节点列表XMLs:

public void split(Document inDocument) throws ParserConfigurationException,
            SAXException, IOException {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        SaveXML savePerJob = new SaveXML();
        // Load the input XML document, parse it and return an instance of the
        // Document class.
        Document document = inDocument;
        //all elements
        //jobs
        NodeList nodes = document.getDocumentElement().getChildNodes();
        NodeList jobs = nodes.item(7).getChildNodes();
        for(int j =0; j<jobs.getLength(); j++){
            Node itm = jobs.item(j);
            String itmName = itm.getFirstChild().getNodeName();
            String itmID = itm.getFirstChild().getTextContent(); …
Run Code Online (Sandbox Code Playgroud)

java xml dom nodelist

2
推荐指数
1
解决办法
4366
查看次数