2012-05-24 28 views
2

我有一個網站,其中包括jQuery的標籤的HREF,所以我有一個主題標籤在我的網址,獲取顯示所需的選項卡:JavaScript的 - 改變一個鏈接

www.abc.de/site#tab4 

在這個網站上我有一個鏈接看起來像這樣:

<a href="/site.html?option=1" name="optionslink" id="optionslink" onclick="javascript:test()">LINKTEXT</a> 

有了這個鏈接,用戶可以選擇一個產品的選項。點擊重新加載網站。我想做到這一點就按這個字符串在URL中的井號標籤讀出,然後該字符串將被添加到URL或鏈接後...

我的功能看起來是這樣的:

function test() { 
var info=window.location.hash; 
alert(info); 
document.getElementById("optionslink").href+info; 
return true; 
} 

到目前爲止,該功能是點擊我得到一個警報彈出窗口,顯示正確的哈希標籤和它的字符串。但是網站被重新加載而沒有添加hashtag +字符串。它看起來像這樣:

www.abc.de/site.html?option=1 

它應該看起來像:

www.abc.de/site.html?option=1#tab4 

我怎樣才能得到這個工作?

+1

的瞭解它「的javascript:」在你的onclick是多餘的 - 它應該只是測試() – Nealbo

+1

THX的提示,Nealbo! – profilneurotiker

回答

2

簡單地改變位置:

function test() { 
    var info=window.location.hash; 
    window.location = document.getElementById("optionslink").href + info; 
    return false; 
} 

<a href="/site.html?option=1" name="optionslink" id="optionslink" onclick="return test();">LINKTEXT</a> 

另一件事,你通過當前的錨點的功能,並保存DOM查詢開銷:

function test(anchor) { 
    var info=window.location.hash; 
    window.location = anchor.href + info; 
    return false; 
} 

<a href="/site.html?option=1" name="optionslink" 
    id="optionslink" onclick="return test(this);">LINKTEXT</a> 

注根本不使用inline scripts是JavaScript事件的最佳做法。

你應該閱讀有關addEventListener,您可以在MDN

+0

如果它的jQuery標籤我不認爲它是一個好主意,返回onclick的東西你不覺得嗎?特別是如果你測試函數返回false – meo

+0

@meo。你爲什麼這麼認爲? – gdoron

+0

因爲返回false;打破事件的冒泡...如果其他函數監聽這個元素上的klick,那麼even就不會在那裏得到結果 – meo

3

您沒有更改href屬性。嘗試

document.getElementById("optionslink").href += info; 

你的代碼document.getElementById("optionslink").href+info;只是沒有任何影響,因爲只是concatination,但沒有分配給href屬性。

+0

Thx Sirko爲您的快速回答...我不是很熟悉javascript代碼,我將不得不學習很多......將我的代碼更改爲您的建議對我沒有任何影響,但第二種解決方案gdoron爲我做了... thx了! – profilneurotiker