2013-02-25 81 views
0

我使用substring(1)从href属性中获取最后一个字符。string.substring(1)在具有相同html的不同网站上给出不同结果

我正在说javascript。在我的开发网站上,一切都很好,并且返回B,一切正常。

在该网站上的现场版,同样的子串(1)对同一HREF回报TTP://www.mysite.com/page/#B - 它起飞的第一个字符,并返回休息。

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

我用SUBSTR(-1,1)代替,一切工作正常,但我想知道是否有人能告诉我为什么我得到了相同的输入2个不同的结果。

谢谢!

额外的资讯

我一直在使用从CSS技巧的OrganicTabs脚本,而现在(http://css-tricks.com/organic-tabs/)和从未有相关的问题,直到最近。我跟踪下来的子行: var curList = base.$el.find("a.current").attr("href").substring(1)

我此脚本的目标是一个链接的例子: <a href="#B"></a>

我已经修改了脚本使用SUBSTR代替,但我不”不知道为什么我会得到与子字符串不一致的结果。

+3

'子(1)'应该返回字符串没有它的第一个字符。 (就像你在'活'的服务器上一样。)如果你有不同的结果,那么你在同一个输入上执行子字符串NOT。你能告诉我们代码吗? – marekful 2013-02-25 16:34:32

+0

根据以下内容,您获得的实时版本是“正确的”,因为它返回了从索引1开始的字符串中的所有内容:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects /字符串/子字符串 – 2013-02-25 16:35:21

+1

看起来像你正在使用'window.location.hash.substring(1);'在一个地方和'window.location.substring(1);'在另一个。 – jbabey 2013-02-25 16:36:43

回答

1

您是在本地读书的HREF,是只存储的URL的散列部, 而由于某种原因,Live网站HREF的把整个URL

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

的子功能工作正常,因为substring(1)应该返回的一切,但第一个字符。

检查你如何生成网址

编辑:最好的办法是让子从散起(不包括它),它涵盖这两种情况,以及情况哈希长于1个字符

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

+0

我意识到我的本地网站是非www和现场网站。这可能会有所作为吗?我不这么认为...... – Jarrod 2013-02-26 16:52:07

+0

www应该不重要。如上所述,重要的是hrefs是否拥有完整或相对的网址。 – Dogoku 2013-02-26 18:22:25

+0

你是绝对正确的,活网站正在使用完整的URL,由于某种原因,开发网站只存储散列。并感谢您推荐涵盖更多场景的子字符串! – Jarrod 2013-02-27 05:30:23

1

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

参见:

相关问题