2014-01-13 49 views
0

我在使用多個div標籤時出現一些代碼工作異常idsJava腳本在新窗口的多個Div內打開鏈接

此代碼是在html文件的頭部和正常工作單個divid

<!-- 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 --> 

我想這能爲多個工作divs標籤不同IDs相同html頁面上,但document.getElementById將只允許單個div ID

我曾嘗試多次重複上述代碼,每個div但它只適用於最後一次迭代。

有誰知道如何使代碼與多個div標籤工作ids

+0

請看看使用css類代替。 –

+1

也許看看[document.getElementsByClassName](https://developer.mozilla.org/en-US/docs/Web/API/document.getElementsByClassName)。 – tenub

+0

你的HTML是什麼樣的?我不能重現此問題:http://jsfiddle.net/Y5ZZ3/1/ – showdev

回答

0

替換此部分:

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

有:

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

這將導致節點中'article'id的所有標籤。

但如果您有多個文章節點,則最好在'class'屬性中設置'article',而不是設置爲'id'。然後簡單地改變這樣的代碼:

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

並且如果「一」標籤是文章節點的第一級的childNodes你也可以這樣做:

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

謝謝你 - 第二個選項,你給了完美的作品 –

+0

這節省了我手動應用target = blank到近3000頁的網站!如果將來任何人看到這篇文章,並會從解決方案中受益 - 我使用了class =「external」和Mehran的建議 - 下面是使用新代碼的示例頁面:http://www.engaygedweddings.com/ca/caterers-ca -gay-wedding/colettes-events.html –

1

變化

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

var links = document.getElementsByClassName('your-class'); 
+0

難道我仍然需要.getElementsByTagName('a ');?我會盡量按照你給我的方式來嘗試,我更喜歡用CSS Class來做這個,而不是多個DIV,所以非常感謝你;-) –

+0

好吧,你可以使用。的getElementsByTagName( 'A');縮小搜索範圍,如果您打算在錨點以外的其他元素上使用「您的類」 – LorDex

+0

感謝您的幫助 - 最終有效的工作是:var links = document.querySelectorAll(「。article a」); –

0

對於需要多個div添加類的名稱,例如「文章」:在此之後

<div class="article"><a>one</a></div> 
<div class="article"><a>two</a></div> 

你可以在明年方式的元素:

document.querySelectorAll('div.article>a') 
+0

謝謝 - 這個作品 - 我結束了與var links = document.querySelectorAll(「。article a」); –