3

这让我发疯。

我有一个通过 php 动态创建的 ebay 商店菜单。

网址如下所示:

 http://stores.ebay.co.uk/somestore/Golf-Shoes-/_i.html?_fsub=3831075010

其中有几个,由于某种原因我的拆分不起作用,我试图在最后一个斜杠之后删除数据。

    $('.MenuItem a:odd').each(function() {
    var $href = $(this).attr('href');
    $href.split('_')[1];
    console.log($href);
});

按照我的逻辑应该返回:http ://stores.ebay.co.uk/somestore/Golf-Shoes-/

我在这里做了一个小提琴:http: //jsfiddle.net/lharby/HA793/1/

我不能离得太远。我也尝试过按其他角色拆分来测试理论,但似乎没有任何效果。我哪里错了。

4

6 回答 6

3

直接出自MDN 文档

与 C 等语言不同,JavaScript 字符串是不可变的。这意味着一旦创建了字符串,就无法修改它。但是,仍然可以基于对原始字符串的操作创建另一个字符串。

拆分对它正在拆分的字符串没有影响。而是将拆分的第一部分分配给像这样的变量

var part = $href.split('_')[0];

您也可以像这样使用最后一个斜杠作为参考点

var part = $href.substring( 0, $href.lastIndexOf( '/' ) + 1 );

在这里提琴

于 2013-06-10T11:44:46.770 回答
2

试试这个:

$('.MenuItem a:odd').each(function () {
    var href = this.href.split('_')[0];
    console.log(href);
});

小提琴演示

  • 使用获取hrefthis.href
  • 用 char 拆分 href'_'
  • 使用获取数组的第一部分split('_')[0]
于 2013-06-10T11:43:02.460 回答
1

你所缺少的只是一个赋值运算符

$href = $href.split('_')[0];

于 2013-06-10T11:44:33.863 回答
1

您需要将拆分操作的结果分配给一个变量以供以后使用。

var href = $(this).attr('href');
href = href.split('_')[0];
console.log(href);

http://jsfiddle.net/HA793/5/

此外,当结果实际上是一个 jQuery 对象时,我建议只使用 $ 变量名称前缀。

于 2013-06-10T11:45:06.093 回答
1

您应该将拆分结果分配给变量 $href:

$('.MenuItem a:odd').each(function() {
var $href = $(this).attr('href');
$href = $href.split('_')[0] + $href.split('_')[1];
console.log($href);
于 2013-06-10T11:47:33.210 回答
-1

考虑使用这个函数: http: //php.net/manual/en/function.parse-url.php

于 2013-06-10T11:44:54.127 回答