我有一个由包含几个链接的元素组成的节点列表。我想将这几个链接打开成1 for循环,但似乎卡住了

问题描述 投票:-1回答:1
 let isin = document.querySelectorAll("tbody tr th a "); <!-- correct one -->

    // let newTab = window.open( "", "_blank");`enter code here`


    newTab.document.open("isin");


    for (let i = 0; i <= isin; i++ ){
        j.forEach(a.click("_blank"));
    } else {
        return;
    }

上面的代码是我目前正在从事的工作。但是我绝对知道这是错误的。

任何建议将不胜感激!

javascript dom nodelist
1个回答
0
投票

您需要用当前代码处理三件事。

1。一致变量

现在看来,您尝试引用代码,但是您的变量名确实以某种方式更改,使得程序无法理解它。例如,在for循环内,您可以使用此循环声明的变量i

for (let i = 0; i <= isin; i++)
     ^^^^^

然而,在下一行中,您正在使用j-您的示例中未定义的变量。另外,片刻之后,您尝试执行此操作:a.click()。这实质上就是您要实现的目标-触发链接的点击方法。但是,a变量内的链接目前不可用。

2。循环播放

现在,您已经以某种方式设置了您的代码,应该可以遍历所有链接。到目前为止,一切都很好,但是在第二个迭代步骤.forEach中,事情有些失控了。现在,对于每个存在的链接,它说打开所有链接。可以通过删除其中一种循环方法轻松地解决此问题-因此,我们需要这样做:

isin.forEach()

3。添加功能

此刻forEach为空。但是在那里应该发生两件事:1.设置目标属性2.触发点击方法

  1. 这是为了确保在另一个选项卡中打开链接。为此,链接属性target应设置为'_blank'。方法如下:

    link.target = '_blank';
    
  2. 您已经在代码中使用了它,在链接上调用click

    link.click();
    

组合在一起

现在最后一个问题是这个神秘的link变量来自何处。答案:这是forEach方法正在处理的集合中的当前元素。

let isin = document.querySelectorAll("tbody tr th a "); <!-- correct one -->

[...document.getElementsByTagName('a')].forEach(function (link) {
    link.target = '_blank';
    link.click();
});
© www.soinside.com 2019 - 2024. All rights reserved.