我正在使用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获得不一致的结果。
答案 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)