string.substring(1)在具有相同html的不同站点上给出不同的结果

时间:2013-02-25 16:32:18

标签: javascript substring

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

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

在网站的实时版本上,相同href上的相同子字符串(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获得不一致的结果。

2 个答案:

答案 0 :(得分:1)

如果String.prototype.substring(n [,...])为正数,则

n会返回字符串中的第一个n个字符,而不是最后一个字符。您需要substr(-1)

请参阅:

答案 1 :(得分:1)

您正在本地阅读的href,只存储网址的哈希部分, 虽然由于某种原因,Live网站href有整个网址

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

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

检查您如何生成网址

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

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