bugfix> javascript > 投稿

ifステートメント内の既存の配列のスプライスで変数を更新していますが、更新された配列でのみループを実行する必要がありますが、値配列で未定義のプロパティ 'replace'を読み取ることができません。 2つの値の範囲の上限が必要なため、値と1つの配列インデックスを入力する必要があるため、このエラーが発生するだけです。 (values [i + 1] .replace( '、'、 '')。+ 1が置換により値が未定義として表示される原因は何か考えられますか?可能な限り助けてくれてありがとう!

dropDown = function (arg) {
if ($('select[name="est_property_value"]').length != 0) {
    var values = ["0", "60,000", "85,000", "90,000", "95,000", "100,000", "105,000", "110,000", "115,000", "120,000", "125,000", "130,000", "135,000", "140,000", "145,000", "150,000", "155,000", "160,000", "165,000", "170,000", "175,000", "180,000", "185,000", "190,000", "195,000", "200,000", "210,000", "220,000", "230,000", "240,000", "250,000", "260,000", "270,000", "280,000", "290,000", "300,000", "310,000", "320,000", "330,000", "340,000", "350,000", "360,000", "370,000", "380,000", "390,000", "400,000", "420,000", "440,000", "460,000", "480,000", "500,000", "520,000", "540,000", "560,000", "580,000", "600,000", "620,000", "640,000", "660,000", "680,000", "700,000", "720,000", "740,000", "760,000", "780,000", "800,000", "820,000", "840,000", "860,000", "880,000", "900,000", "920,000", "940,000", "960,000", "980,000", "1,000,000", "1,500,000"],
        anchor = $('select[name="est_property_value"]').val();
    // default arg loads larger ltv on page load
    if (arg === 'default') {
        values = values.splice(0, 18);
    }
    console.log(values);
        for (var i = 0; i < values.length; i++) {
            valueToInt = values[i].replace(',', '');
            if (valueToInt < parseInt(anchor)) {
                curValue = '<option value="' + values[i + 1].replace(',', '') + 1 + '">' + '$' + values[i] + ' - $' + values[i + 1] + '</option>';
                $('select[name="mortgage_amount"]').append(curValue);
            }
        }

}
return;

}

回答 1 件
  • あなたが問題で言及したように、 i + 1  その問題を作ります。配列に存在しないためです。 forループで条件を使用して、次の要素が存在するときにそれを使用できます。そして、配列の最後の要素に到達したら、0 例えば。

    forループをこれに変更します

    for (var i = 0; i < values.length; i++) {
      valueToInt = values[i].replace(',', '');
      if (valueToInt < parseInt(anchor)) {
        curValue = '<option value="' + (values[i + 1] ? values[i + 1] : '0').replace(',', '') + 1 + '">' + '$' + values[i] + ' - $' + (values[i + 1] ? values[i + 1] : '0') + '</option>';
        $('select[name="mortgage_amount"]').append(curValue);
      }
    }
    
    

あなたの答え