2012-07-25 99 views
0

好吧,所以我基本上有三個動態下拉框和一個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變量。

+1

array_shapes是什麼樣子的? – 2012-07-25 19:32:00

+0

從存儲在頁面文本框中的CSV文件中解析array_shapes。它被解析成一個數組數組。我真正能夠看到的唯一方法就是通過螢火蟲。 – cybeldia 2012-07-25 19:36:37

+0

你可以發佈該數組中的值是什麼?你能發佈你在警報(selected_beam)中產生的值嗎? – 2012-07-25 19:39:17

回答

2

根據您的數組值,它看起來像你需要大寫變種X一樣:

var x = 'X'; 

如果我正確地讀你的陣列,它也像束尺寸爲元素0和1的數組不是1和2,所以你可能不需要查找array_shapes [i] [2],而是array_shapes [i] [0]或array_shapes [i] [1]

數組的索引值爲0.

+0

+1,但令人傷心的是提問者沒有提供他們問題中最重要的東西。 – pat34515 2012-07-25 19:56:20

-1

您正在連接從文本框中解析的值。其結果將是一個字符串

嘗試做:

var selected_beam = parseInt(shape) + parseInt(dimension_one) + parseInt(x) + parseInt(dimension_two); 
+0

parseInt(x)將返回一個NaN。 – mabbas 2012-07-25 19:36:58

+0

我認爲他希望它是一個字符串。我的猜測是他試圖匹配像'W10x30'(來自我的結構工程日)的鋼樑尺寸名稱。 – 2012-07-25 19:40:28

+0

這正是我想要做的。我想匹配光束尺寸,然後提取有關它們的信息。 – cybeldia 2012-07-25 19:43:40

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。

相關問題