我正在尝试检索我通过 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)
firstChild
继承自node interface
children
继承自 ParentNode mixin并且是一个实时 HTMLCollection。
关于javascript - 从 li 的子节点检索文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51391750/