2011年05月23日に投稿

[Javascript]IEではsubstrメソッドの第2引数に負の数値を指定することができない

指定した位置から指定した文字数だけ文字列を抜き出すメソッドにsubstrがありますが、FirefoxとIEで挙動が異なっていたため思い通りの動きとならない原因を特定するのに時間がかかりました。具体的な違いは下記の通りです。


以下は文字列「hello world」の右から3文字を抜き出すコードです。ChromeやFirefoxでは「rld」と表示されますが、IEでは第1引数に負の値をとることができず、正の値に変換されるため「hel」が表示されます。
[javascript]
var hoge = ‘hello world’;
alert(hoge.substr(-3, 3));
[/javascript]

IEでも意図した動作をさせたい場合は下記のように記述することで実現できました。
[javascript]
var hoge = ‘hello world’;
alert(hoge.substr(hoge.length – 3, 3));
[/javascript]

関連記事

Leave a Reply