0

我正在使用 substring(1) 从 href 属性中获取最后一个字符。

我说的是javascript。在我的开发站点上,一切正常,href http://www.mysite.come/page/#B返回 B,一切都很好。

在网站的实时版本中,相同 href 上的相同 substring(1) 返回 ttp://www.mysite.com/page/#B - 它去掉第一个字符并返回其余字符。

我不知道它为什么这样做。我已经在多个站点上使用了相同的脚本,没有任何问题。唯一可能相关的是开发站点正在运行更新版本的 jquery (1.8.1),并且 live 是在 1.7.1 上。

我改用 substr(-1,1) 并且一切正常,但我想知道是否有人可以告诉我为什么我从相同的输入中得到 2 个不同的结果。

谢谢!

额外信息

我已经使用 CSS Tricks 中的 OrganicTabs 脚本有一段时间了(http://css-tricks.com/organic-tabs/),直到最近才遇到问题。我将其追踪到子字符串行: var curList = base.$el.find("a.current").attr("href").substring(1)

我是这个脚本所针对的链接之一的示例: <a href="#B"></a>

我已修改脚本以改用 substr,但我不知道为什么我会得到与 substring 不一致的结果。

4

2 回答 2

1

您在本地阅读的 href 仅存储 url 的哈希部分,而由于某种原因,Live 网站 href 具有整个 url

<a href="#B">Link</a>对比<a href="http://www.mysite.come/page/#B">Link</a>

substring 函数按预期工作,因为substring(1)应该返回除第一个字符之外的所有内容。

检查您如何生成您的网址

编辑:最好的解决方案是从哈希开始获取子字符串(不包括它),它涵盖了这两种情况,以及哈希长于 1 个字符的情况

href.substring(href.indexOf("#")+1)

于 2013-02-25T16:36:14.253 回答
1

String.prototype.substring(n [,...])如果是正数,则返回n字符串中的第一个字符,而不是最后一个字符。n你需要substr(-1)这个。

看:

于 2013-02-25T16:35:25.950 回答