有效地添加/删除当前URL中的目录w/JavaScript

问题描述:

我是一个JavaScript初学者,并设法拼凑到以下代码。它完成了工作,但我想继续学习,我想知道是否有更高效/更优雅的方式来完成任务。有效地添加/删除当前URL中的目录w/JavaScript

我有一个英文网站翻译成意大利文。翻译后的页面具有相同的文件名,并驻留在“IT”目录中。因此,我在每个页面上放置一个链接,触发脚本添加/ IT /,同时保留当前URL的其余部分。在意大利语网页上,补充脚本将删除该目录以返回到英文页面。

下面的代码:

(注:我的网站的一部分的情况下,居住在domain.com/site/你想知道为什么代码不能在根级别添加/ IT /目录。)

function italian(){ 
    var str; 
    var str = document.URL; 
    arr = str.split("/"); 
    var URLparts; 
    var URLparts = arr.length; 
    var count; 
    var count = 0; 

    var newURL; 
    newURL = ""; 


    while (count < URLparts){ 
    newURL = newURL + arr[count]; 
    count = count + 1; 

     if (count < URLparts){ 
     newURL = newURL + "/"; 
     } 

     switch(count){ 
     case 4: 
     newURL = newURL + "IT/"; 
     break; 
     } 

    } 

    window.location = newURL; 

} 

我可以改进它?我当然愿意参加腿部工作。如果你能指点我的研究方向,我很乐意从那里开始。

谢谢!

稍微更简洁的版本可能会使用一个正则表达式插入/从URL删除/ IT /部分,即:

function italian() { 
    # make domain.com/site/ -> domain.com/site/IT/ 
    window.location = document.URL.replace(/site\//, "site/IT/") 
} 
+0

稍微简洁一点?这正是我所期待的。很有趣,我刚买了O'Reilly的正则表达式书。他们只是没有深入,还没有想到要使用它!非常感谢您的时间。 – EricDobson 2011-01-07 07:26:38

取决于您使用哪种服务器端语言,但大多数语言都具有良好的i18n(国际化)支持。这样您就可以在一个布局中创建多语言网站。这样做的好处是,如果更改了某些内容,则不必两次更改代码。

我意识到我的回答并不是真正改善脚本的答案,但我认为这对您的完整站点会有很大的改进。

+0

我很欣赏你的反应。我认为你所描述的是我的理想。在这种情况下,该网站只有大约20页,我需要我能够迅速找到并实施的最简单的事情。现在,我有时间回顾并完善它,只是为了学习更多。 – EricDobson 2011-01-07 07:19:55