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)を実行しており、ライブが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)

このスクリプトが対象としているリンクの1つの例は次のとおりです。 <a href="#B"></a>

代わりにsubstrを使用するようにスクリプトを変更しましたが、substringで一貫性のない結果が得られる理由がわかりません。

4

2 に答える 2

1

String.prototype.substring(n [,...])nが正の場合、文字列の最初の文字を返しますn。最後の文字ではありません。これが必要substr(-1)です。

見る:

于 2013-02-25T16:35:25.950 に答える
1

ローカルで読んでいるhrefは、URLのハッシュ部分のみを保存していますが、何らかの理由で、ライブWebサイトのhrefにはURL全体が含まれています。

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

substring(1)最初の文字以外のすべてを返す必要があるため、部分文字列関数は期待どおりに機能しています。

URLの生成方法を確認してください

編集:最良の解決策は、ハッシュ(それを除く)から始まる部分文字列を取得することです。これは、ハッシュが1文字より長い場合と同様に両方の場合をカバーします。

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

于 2013-02-25T16:36:14.253 に答える