使用javascript查找和替换href中的参数

时间:2009-10-01 14:05:12

标签: javascript

问题在于:

我需要检查查询中的参数。如果它被设置了,那么我需要改变它(更难的部分)。如果没有设置,我需要设置它(简单部分)

我非常确定这将是一项轻松的任务,但它最终会比我想象的要复杂一些。特别是对于那些有多个参数的情况,我正在寻找的那个位于中间某个地方。

参数为“siteLanguage”,后面跟=xx,其中xx代表任意两个字符,如enes或其他任何字符。所以也许正则表达式是答案(男孩,我是否正在使用正则表达式)

没有这个框架,伙计,只是简单的'javascript。

3 个答案:

答案 0 :(得分:2)

我猜你已经找到了如何找到所有链接。

网址的标准格式为service://host/path?query

我建议删除query(只需在第一个?之后删除所有内容),然后将其拆分为&(因为这会分隔参数)。

您将留下key=value形式的数组。将其拆分为关联数组。现在你可以处理那个数组了。完成修改后,您需要再次加入查询并设置链接的href属性。

答案 1 :(得分: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);
            }
        }
    }

答案 2 :(得分: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线功能很满意......