首页 > 解决方案 > 如何将节点列表中的 HREF 属性分配到常规数组中?

问题描述

因此,正如您在下面的代码中看到的那样,downloadLinks变量是<a>元素的 NodeList,我需要获取href属性并将它们分配到linkContainer数组中。for 循环根本不起作用。我究竟做错了什么?

谢谢!

( () => {

    "use strict";

    // Variables holding content to show & hide

    const tab1 = $("#default"),
          tab2 = $("#dim"),
   featureList = $("#default-wac-feature-list"),
 downloadLinks = document.querySelectorAll("#dropdown-download-links > li > a"),
 linkContainer = [];

  for(let i = 0; i < downloadLinks.length - 1; i++) {
      linkContainer[] = downloadLinks[i].href;
  }

  console.log(linkContainer);


}) ();

标签: javascript

解决方案


使用i < downloadLinks.length代替i < downloadLinks.length - 1,并将链接分配给索引 - linkContainer[i](或使用Array.push)。

const downloadLinks = document.querySelectorAll("#dropdown-download-links > li > a"),
      linkContainer = [];

for (let i = 0; i < downloadLinks.length; i++) {
  linkContainer[i] = downloadLinks[i].href;
}

console.log(linkContainer);
<ul id="dropdown-download-links">
  <li><a href="1">1</a></li>
  <li><a href="2">2</a></li>
  <li><a href="3">3</a></li>
</ul>

一个更简单的选择是直接Array.from()将 NodeList 转换为 href 数组:

const downloadLinks = document.querySelectorAll("#dropdown-download-links > li > a");

const linkContainer = Array.from(downloadLinks, el => el.href);

console.log(linkContainer);
<ul id="dropdown-download-links">
  <li><a href="1">1</a></li>
  <li><a href="2">2</a></li>
  <li><a href="3">3</a></li>
</ul>


推荐阅读