javascript - 从 li 的子节点检索文本

标签 javascript html

我正在尝试检索我通过 javascript 创建的 li 元素的 a 元素的文本。这是我用来创建的代码:

function myFunction(search) {
    // Declare variables
    var input, filter, ul, li, a, i;
    input = document.getElementById('delegateNameInput');
    filter = input.value.toUpperCase();
    ul = document.getElementById("nameList");
    li = ul.getElementsByTagName('li');

    data = ['test1', 'test2', 'test3'];

    for (i = 0; i < data.length; i++) {
        var lineItem = document.createElement("li");
        lineItem.setAttribute('onClick', 'setName(this)');
        var link = document.createElement("a");
        link.appendChild(document.createTextNode("test2"));
        lineItem.appendChild(link);
        ul.appendChild(lineItem);
    }
}

如何从 a 元素获取文本?

最佳答案

按照其编写方式, anchor 元素是创建的 LI 元素的第一个子元素,并由 LI 元素的 firstChild 属性指向。

或者,您可以将 A 元素定位为 DOM 中 LI 节点的 children 属性中的第一个条目。

为了本演示的目的,我将列表项中的文本设置为不同的数据数组条目,声明 data,并忽略未使用的变量 input、filter:

"use strict";
function myFunction(search) {
    // Declare variables
    var input, filter, ul, li, a, i, data;
    input = document.getElementById('delegateNameInput');
    filter = input.value.toUpperCase();
    ul = document.getElementById("nameList");
    li = ul.getElementsByTagName('li');

    data = ['test1', 'test2', 'test3'];

    for (i = 0; i < data.length; i++) {
        var lineItem = document.createElement("li");
        lineItem.setAttribute('onClick', 'setName(this)');
        var link = document.createElement("a");
        link.appendChild(document.createTextNode(data[i]));
        lineItem.appendChild(link);
        ul.appendChild(lineItem);
    }
}

function setName( lineItem) {
    console.log("setName>lineItem>Anchor>link text = '" + lineItem.firstChild.textContent + "'");
    console.log("(using children: '" + lineItem.children[0].textContent + "')");
}

myFunction(null);
<input type="text" id="delegateNameInput" placeholder="delegateNameInput">
<ul id="nameList">

</ul>
(Click a list item to see console message)
<小时/> 引用文献:

关于javascript - 从 li 的子节点检索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51391750/

相关文章:

Java 同步和在文本 Pane 中写入

android - 文件输入 - 在 android 上接受来自相机或图库的图像

javascript - IE 兼容模式 JavaScript 函数未调用

javascript - 使用 jQuery 获取当前 URL?

javascript - 在 youtube 页面中放置两个不同的滚动条以改进自定义 UI 体验

javascript - 在 chrome/ff 中使用 createObjectURL 将数据 URI 转换为对象 URL

html - 响应式 div 在中心。每边的 Px div

javascript - 为什么即使对于 iPhone 模拟,模拟器也会将 uagent 返回为 ipad?

javascript - 在 .php 文件中添加 javascript 签名板

javascript - 如何将 YouTube 视频嵌入到指定的容器中?