0

好的,我所拥有的基本上是三个动态下拉框和一个二维数组。我让每个框将它们的值相加,然后我希望通过数组搜索值的总和,以在该值所在的行中提取第五个值。

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

根据您的数组值,您似乎需要将 var x 设为大写,例如:

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!== "your value"

我建议你使用这个函数来比较字符串:

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 回答