Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Java脚本在新窗口中打开多个div内的链接_Javascript_Html_Css - Fatal编程技术网

Javascript Java脚本在新窗口中打开多个div内的链接

Javascript Java脚本在新窗口中打开多个div内的链接,javascript,html,css,Javascript,Html,Css,当使用多个div标记和不同的id时,我很难让一些代码正常工作 此代码位于html文档的头部,对于单个divid,可以正常工作: <!-- Start External Links in New Window Requires div id article --> <script type='text/javascript'>//<![CDATA[ window.onload = function () { var links = doc

当使用多个
div
标记和不同的
id
时,我很难让一些代码正常工作

此代码位于
html
文档的头部,对于单个
div
id
,可以正常工作:

<!-- Start External Links in New Window Requires div id article -->
<script type='text/javascript'>//<![CDATA[     
window.onload = function () {  
        var links = document.getElementById('article').getElementsByTagName('a');  
        for (var i = 0; i < links.length; i++) {  
            links[i].setAttribute('target', '_blank');}
        }  
//]]>  
</script>
<!-- End of External Links -->

//  
我需要它来处理同一
html
页面上具有不同
ID
的多个
div
标记,但是
文档中的
getElementById
只允许一个
div ID

我尝试对每个
div
多次重复上面的代码,但它只适用于最后一次迭代

有人知道如何使代码与具有不同ID的多个
div
标记一起工作吗?

更改

var links = document.getElementById('article').getElementsByTagName('a');

替换此部分:

var links = document.querySelectorAll("#article a");
与:

这将导致节点中具有“article”id的所有a标记

但是如果您有多个项目节点,那么最好在“class”属性中设置“article”,而不是设置为“id”。然后简单地更改代码,如下所示:

var links = document.querySelectorAll(".article a");
如果“a”标记位于文章节点childnodes的第一级,您也可以执行以下操作:

var links = document.querySelectorAll(".article>a");

对于多个div,您需要添加类名,例如“article”:


看看如何使用css类。也许可以看看。你的HTML是什么样子的?我无法重现此问题:@412“我尝试对每个div重复上述代码多次”。似乎有效”:我以类名结束,现在它工作得很好。如果在class=“external”的代码中运行搜索,您可以看到我使用的各个div id。下面是一个示例html页面:我是否仍然需要.getElementsByTagName('a');?我将完全按照您给我的方式进行尝试。我更希望通过CSS类而不是多个div来完成此操作,因此非常感谢;-)好的,您可以使用.getElementsByTagName('a');为了缩小搜索范围,如果您计划在主播以外的其他元素上使用“您的类”,请感谢您的帮助-最终有效的方法是:var links=document.querySelectorAll(“.article a”);谢谢-您提供的倒数第二个选项非常有效这使我不用手动将target=blank应用到一个近3000页的网站上!如果将来有人看到这篇文章并会从解决方案中受益-我使用class=“external“还有Mehran的建议——这里有一个使用新代码的示例页面:谢谢——这很有效——我最后选择了var links=document.queryselectoral(“.article a”);
var links = document.querySelectorAll(".article a");
var links = document.querySelectorAll(".article>a");
<div class="article"><a>one</a></div>
<div class="article"><a>two</a></div>
document.querySelectorAll('div.article>a')