2

配列内の特定の要素が隣接する 2 つの要素よりも大きいかどうかを確認しようとしていますが、array[element+1] は未定義を返します。ただし、 array1[(element-1)+2] を試してみると、問題なく動作します。

これは配列です:

var array1 = [1, 5, 56, 6, 7, 8, 12, 5, 1];

そして私のコード:

function biggestOfThree(element){
    if((element == 0)||(element == array1Length-1)){
        document.write("There aren't 2 adjacent elements in the array");
    }
    else{
        if((array1[element]>array1[element+1])&&(array1[element]>array1[element-1])){
            document.write(array1[element] + " is bigger than it's adjacent elements")
        }
        else{
            document.write(array1[element] + " isn't bigger than it's adjacent elements")
        }
    }

}

...そして、ユーザーが要素を受け取る関数:

function assign(){
var i_element = document.getElementById('indexOfTheElement');
var i = i_element.value;
    biggestOfThree(i)
}
4

1 に答える 1

6

表示されるエラーは、JavaScript の動的型付けが原因です。parseIntを使用する

var i = parseInt(i_element.value);

まだそれを文字列と見なし、+ 1それに 1 を追加します。a を実行すると、-1強制的に int と見なされます。したがって、あなたの結果。を使用して常に int に変換しますparseInt()

"1" + 1 = 11
"1" - 1 = 0

@Eliasが言ったように、parseIntを使用するときは基数を定義するのが最善です。

parseInt(string, 10)
                  ^ radix
于 2012-11-02T16:16:32.637 に答える