0

さて、私が持っているのは基本的に3つの動的ドロップダウンボックスと2D配列です。各ボックスに値を加算してから、値の合計を配列で検索して、値がどの行にあるかに関係なく5番目の値を引き出します。

var shape = document.getElementById("shape").value;
var dimension_one = document.getElementById("dimension_One").value;
var x = 'x';
var dimension_two = document.getElementById("dimension_Two").value;
var selected_beam = shape + dimension_one + x + dimension_two; // combine all values from text boxes 
alert(selected_beam);

for (i = 0; i < array_shapes.length; i++)
{
    if (array_shapes[i][2] == selected_beam) {
        alert('Area=' + array_shapes[i][5]);
        //Area= array_shapes[i][5]);
    }
}

選択した_beamが必要な値を提供していることを知っています。また、配列ループが配列から必要なものを返すことも知っていますが、これは置換した場合のみです。

if (array_shapes[i][2] == selected_beam)

if (array_shapes[i][2] == "value I want to search for")

したがって、私が本当に知る必要があるのは、なぜそれが文字列としてのみ受け入れられ、selected_beam変数としては受け入れられないのかということです。

4

3 に答える 3

2

配列の値に基づくと、varxは次のように大文字にする必要があるようです。

var x = 'X';

配列を正しく読み取っている場合、ビームサイズは配列の要素0と1にあり、1と2ではないように見えます。したがって、array_shapes [i] [2]ではなく、array_shapes[iを探す必要があります。 ][0]またはarray_shapes[i][1]

配列の最初の項目はインデックス値=0にあります。

于 2012-07-25T19:44:54.680 に答える
0

デバッグを行う必要があります。

selected_beamまず、 !== "あなたの価値"である理由を知る必要があります。

この関数を使用して文字列を比較することをお勧めします。

function compare( s1, s2 ){
  alert("s1: " + s1.toString());
  alert("s2: " + s2.toString());
  if (s1.toString() == s2.toString())
    return alert("true");
  return alert("false");
}

>>> compare(selected_beam,"your value");

問題は、に不要な文字が含まれているのと同じくらい単純な場合がありますselected_beam

したがって、ある場所でalert(selected_beam)、文字列を比較して、trueまたはfalseが返されるかどうかを確認してください。

于 2012-07-25T19:43:53.083 に答える
-1

テキストボックスから解析している値を連結しています。結果は文字列になります

やってみてください:

var selected_beam = parseInt(shape) + parseInt(dimension_one) + parseInt(x) + parseInt(dimension_two);
于 2012-07-25T19:35:21.213 に答える