2014-10-01 63 views
0

我有一些JavaScript檢索URL參數,檢查名爲「pc」的參數是否被找到,如果它的值是「tmgppc5」或「tmgggr1」,則附加到所有hrefs在頁面上。使用JavaScript將URL參數傳遞給href

var pc = getQueryVariable("pc"), 
url = 'http://www.thisurl.com'; 

// Check if the parameter called "pc" was found and if it's value is "tmgppc5" or "tmgggr1" 
if (pc && pc === "tmgppc5" || "tmgggr1") { 
    url += "pc=" + pc; 
} 

function getQueryVariable(variable) 
{ 
     var query = window.location.search.substring(1); 
     var vars = query.split("&"); 
     for (var i=0;i<vars.length;i++) { 
       var pair = vars[i].split("="); 
       if(pair[0] == variable){return pair[1];} 
     } 
     return(false); 
} 

var elements = document.getElementsByTagName('href')[0]; 
elements.setAttribute('href',url); 

我使用的getElementsByTagName搜索所有的HREF,但我得到的錯誤:未捕獲的類型錯誤無法讀取的不確定

在一個單一的href作品使用getElementsById財產「的setAttribute」,使用getElementsByClassName返回相同的錯誤。錯誤的原因是什麼?有其他選擇嗎?謝謝。

+0

document.getElementsByTagName('href')[0]。也許,頁面上根本沒有「href」()名稱的元素。 – Qwerty 2014-10-01 11:07:04

+1

你可能想要切換到一些JS庫,比如jQuery,簡單很多。 '$( 'A')。第一個()。ATTR( 'href' 屬性,URL)' – BojanT 2014-10-01 11:08:57

回答

1

你必須有2個錯誤,1。你的「一」,其次 你不能在節點集合的setAttribute,儘量循環搜索的「href」,而不是他們低谷:

var elements = document.getElementsByTagName('a'); 
// You can also use document.querySelectorAll("a") 
for (var i=0; i< elements.length; i++) { 
    elements[i].setAttribute('href',url); 
} 
0

標籤是一個例如(鏈接<a href=""></a>),如果鏈接是錨點,您可以使用 getElementsByTagName('a')