Javascript 获取元素的url

Javascript 获取元素的url,javascript,jquery,arrays,url,Javascript,Jquery,Arrays,Url,我写剧本。获取元素的href。但我只想要这个url的最后一部分。我要这样做: var newURL = $(".list-portfolio a").attr("href"); pathArray = newURL.split( '/' ), secondLevelLocation = pathArray[0]; var newPathname = ""; for ( i = 3; i < pathArray.length; i++ ) {

我写剧本。获取元素的href。但我只想要这个url的最后一部分。我要这样做:

var newURL = $(".list-portfolio a").attr("href");
    pathArray = newURL.split( '/' ),
        secondLevelLocation = pathArray[0];

    var newPathname = "";
    for ( i = 3; i < pathArray.length; i++ ) {  
      newPathname += "/";
      newPathname += pathArray[i];
    }
var newURL=$(“.list公文包a”).attr(“href”);
pathArray=newURL.split('/'),
secondLevelLocation=pathArray[0];
var newPathname=“”;
对于(i=3;i
这就产生了这个几乎不错的
/portfolio/ruimzicht.html
。如何删除第一个/


您有任何改进代码的提示吗?

尝试使用此选项以避免第一次连接
/

for ( i = 3; i < pathArray.length; i++ )
{  
    if(i != 3)
        newPathname+= "/";

    newPathname += pathArray[i];
}
for(i=3;i
为什么不使用数组函数

var pathArray = ["portfolio", "ruimzicht.html"];

// build a string by inserting a forward slash between all elements
pathArray.join("/");

// results in: portfolio/ruimzicht.html
如果你只是对最后一部分感兴趣,你可以把它压缩成一行:

url.split("/").pop(); // yields "ruimzicht.html"

我相信这样做URL解析会使代码变得脆弱和容易出现错误。您可以使用类似的第三方插件,而不是执行所有字符串拆分和/或正则表达式操作,它允许您从元素获取URL并将其分解为不同的部分,以便您可以访问文件名或主机名等。下面是一个如何在您的案例中使用它的示例

var url = $.url($(".list-portfolio a").attr("href"));
url.attr('file'); // this will give you ruimzicht.html

它使代码更简单,更易于阅读和维护。

如果你有很多URL解析器,那么URL解析器是个不错的主意。包含一个170行的插件来将一个两行代码转换成一个两行代码似乎是违反直觉的。我同意你的观点,但我仍然认为问题中给出的代码是脆弱的,并且容易出错。如果添加插件对应用程序来说是过分的,那么至少打开源代码,看看它是如何实现的,是否可以使用。另外,根据我的经验,很多代码都是从一个地方开始使用的,但是随着应用程序的发展,在你意识到之前,你正在多个地方做同样的事情。当然,我完全同意它从一个地方开始,然后从那里开始发展。因为这个原因,我正准备重构我们的应用;)。正如您所说,这取决于用例。就我个人而言,我讨厌用成百上千字节的Javascript来干扰我的用户完成琐碎的任务。无意冒犯,只要我的2美分。我完全支持简化手头的工作和懒惰,这样我就不必再发明别人已经做得比我好的东西了。不适用于IE<9,Opera<10.5。只是要记住一些事情。
var url = $.url($(".list-portfolio a").attr("href"));
url.attr('file'); // this will give you ruimzicht.html