这个问题是关于纯JavaScript的HTML(没有jQuery或其他技术).

我try 手动编写一个包含URL列表的文件,这些URL应该显示为链接.为了减少键入和避免不一致,我想使用JavaScript获取li个元素的列表,并将其转换为li个元素,其中包含适当的a个元素,URL为href,并且是文本.

朝着这个方向努力,我得到了以下代码,有点浓缩(没有a个元素)来展示眼前的问题:

<?xml version="1.0" encoding="UTF-8"?>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body onload="linkify()">
<ul>
    <li href="https://stackoverflow.com/questions/5844732/getelementsbytagname-length-returns-zero" />
    <li href="https://stackoverflow.com/questions/26932862/why-does-document-getelementsbyname-have-a-length-of-0-despite-having-elements" />
    <li href="https://stackoverflow.com/questions/4057440/is-chrome-s-javascript-console-lazy-about-evaluating-objects" />
</ul>
<script>
function linkify () {
    let items = document.getElementsByName( "li" );
    for ( let i = 0; i < items.length; ++i ) {
        item = items.item( i );
        item.innerHTML = item.getAttribute( "href" );
    }
}
</script>
</body>
</html>

我希望页面显示URL列表.但是,该列表保留三个空列表项,没有URL.调试器告诉我,let items = document.getElementsByName( "li" );得到一个0items.length对象,因此for循环不做任何事情.

我希望只有在加载整个DOM时才会调用linkify(),所以应该找到所有三个li元素.我的错误在哪里?

推荐答案

作为替代方案,您可以try 标记名称:

let items = document.getElementsByTagName("li");

Javascript相关问答推荐

如何通过在提交时工作的函数显示dom元素?

使用复选框在d3.js多折线图中添加或删除线条

JQuery. show()工作,但. hide()不工作

自定义高图中的x轴标签序列

当点击注册页面上的注册按钮时,邮箱重复

如何使用子字符串在数组中搜索重复项

这个值总是返回未定义的-Reaction

如何迭代叔父元素的子HTML元素

让chart.js饼图中的一个切片变厚?

向数组中的对象添加键而不改变原始变量

在表单集中保存更改时删除';禁用';

图表4-堆叠线和条形图之间的填充区域

使用RxJS from Event和@ViewChild vs KeyUp事件和RxJS主题更改输入字段值

ngOnChanges仅在第二次调用时才触发

如何在Firebase中读取对象的特定字段?

如何处理不带参数的redux thunk payloadCreator回调函数?

如何使用fltter_js将对象作为参数传递给javascrip?

观察子组件中的@Output事件emits 器?

鼠标进入,每秒将图像大小减小5%

如何在预览中显示html+css与数据URL?