2013-02-25 85 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)

參見:

相關問題