2

これが機能しない理由はありますか?

     var caseString = "sliderInput";
     var theString = caseString.substring(1, 2);

Firefox で Firebug デバッガーを使用すると、「無効な割り当ての左側」というエラーが表示されます。

* *ここに私の正確なコードがあります

        var elements = new Array();
        elements = document.getElementsByTagName("Input");


var allSliderInputs = new Array();
var sliderParams = new Array();
var first, last, inc, style;

for (var i=0; i < elements.length ; i++){
    var c = elements[i].className; //works fine here
    var t = c.substring(0, 2); //when it hits this line it says "invalid assignment left-hand side"

 }
4

3 に答える 3

3

substring0-indexed であるため、代わりに次のようにする必要があります。

var word = "slider";
var part = word.substring(0,2); // sl

また、.slice()は同じことを行いますが、逆方向にも順方向にもカウントできるため、実際にはより強力であることに注意してください。

あなたの新しい問題を解決するために、私はいくつかのことを提案します:

  1. 長さの値をキャッシュする必要があります。によって返されるリストgetElementsByTagNameはライブです。つまり、ループ中にリストを変更すると、その値に影響するため、期待どおりに動作しません。
  2. new Array()派手すぎるので使わないでください。
  3. 直後に定義する変数をインスタンス化する必要はありません。

これを試して:

var elements = document.getElementsByTagName("input");
var allSliderInputs = [];
var sliderParams = [];
var len = elements.length;
var first, last, inc, style, c, t, i;

for (i = 0; i < len; i++) {
    c = elements[i].className; //works fine here
    t = c.substring(0, 2); 
    console.log(t);
}

これは、stackoverflow のこのページで実行すると、Firefox で問題なく動作します。 サンプル結果

于 2012-11-17T20:24:15.570 に答える
3

まず、.substring (および .substr) は 1 ベースではなく 0 ベースです。

.substring2 つの位置の間の文字列を抽出します。たとえば.substring(1,4)、2 番目、3 番目、4 番目の文字を返します。4 の位置で停止します。

.substrstart + length に基づいて文字列を抽出します。 .substr(1,4)2 番目の文字から始まる最初の 4 文字を返します。

于 2012-11-17T20:25:18.910 に答える
2

var theString = caseString.substring(1, 2);あなただけを返す必要がありますl。このsubstringメソッドは、最初の引数として部分文字列の開始を受け入れ、2 番目の引数として部分文字列の終了を受け入れます。2番目の文字であるインデックス1を指定しています(0が最初です)。

substringと間違えたのでしょうsubstrsubstr最初の引数として開始インデックスを受け入れ、2 番目の引数として長さを受け入れます。そう:

var caseString = "sliderInput";
var theString = caseString.substr(0, 2); //sl

あなたが望む結果を与えています。

于 2012-11-17T20:24:11.173 に答える