好的,我所拥有的基本上是三个动态下拉框和一个2D数组。我让每个框将它们的值加在一起,然后我希望通过数组搜索值的总和,以便在值所在的行上拉出第五个值。
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变量。
答案 0 :(得分:2)
根据您的数组值,看起来您需要var x为大写,如:
var x = 'X';
如果我正确地读取你的数组,它看起来像光束大小在元素0和1的数组不是1和2,所以你可能不需要寻找array_shapes [i] [2],而是array_shapes [i] [0]或array_shapes [i] [1]
数组中的第一项是索引值= 0.
答案 1 :(得分: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。
答案 2 :(得分:-1)
您正在连接正在从文本框中解析的值。结果将是一个字符串
尝试做:
var selected_beam = parseInt(shape) + parseInt(dimension_one) + parseInt(x) + parseInt(dimension_two);