2009-10-01 44 views
1

這裏的問題:查找和替換的href參數與JavaScript

我需要檢查查詢參數。如果它已經設置,那麼我需要改變它(更難的部分)。如果還沒有設置,我需要設置它(容易的部分)

我非常確信這將是一件容易的事,但它在某種程度上結束了,比我想象的還要複雜一些。特別是對於那些有多個參數的情況,我正在尋找的是在某處。

的參數是「siteLanguage」,並且總是跟隨=xx其中xx表示任意兩個字符,如enes或或任何。因此,也許正則表達式是答案(男孩,做我吸在正則表達式)

爲這一個沒有框架,球員,只是簡單的醇」的JavaScript。

+0

你的意思的查詢字符串? – Eric 2009-10-01 14:06:02

+0

運行js的頁面的href或頁面上的鏈接的href? – Eric 2009-10-01 14:06:56

+0

是的,查詢字符串。我的錯。 (:。 – peirix 2009-10-01 14:11:15

回答

0

端起來只是做一個快速的黑客就像這樣:

function changeLanguage(lang) { 
    if (location.search.indexOf("siteLanguage") > -1) { //siteLanguage set 
     location.href = location.search.replace(/siteLanguage=[a-z][a-z]/, "siteLanguage="+lang); 
    } else if (location.search == "") { 
     location.href += "?siteLanguage="+lang; 
    } else { 
     location.href += "&siteLanguage="+lang; 
    } 
} 

其實很樂意與9班輪功能...

2

我想你已經找到了如何找到所有鏈接。

的URL的標準格式是service://host/path?query

我建議(第?後只取一切)切掉query,然後分裂,在&(因爲分隔參數)。

你會留下的形式key=value的數組。把它分解成一個關聯數組。現在你可以在這個數組上工作了。完成修改後,您需要再次加入查詢並設置鏈接的href屬性。

+0

這聽起來很防水,但有點太複雜,當只想找_one_參數,甚至不知道它的名字這將是一個一般功能較好,不過,我想 – peirix 2009-10-01 14:44:01

1

這將檢查所有「A HREF =」整個文檔追加或調整的語言。

checkhrefs = function(lang){ 
     var links = document.getElementsByTagName("a"); 
     for (var i=0;i<links.length;i++){ 
      if (links[i].href.indexOf("siteLanguage") == -1){ 
       links[i].href += "&siteLanguage="+lang; 
      } else { 
       links[i].href = links[i].href.replace(new RegExp("siteLanguage=[a-z][a-z]"),"siteLanguage="+lang); 
      } 
     } 
    } 
+0

而我現在看到的,這不是什麼你需要在所有的,哈哈。 – Mark 2009-10-01 14:26:44

+0

呵呵。不,但我喜歡你的正則表達式。這可能是不是做的indexOf +子+更換更快... – peirix 2009-10-01 14:31:47