2013-02-23 50 views
0

我想減去2個值,並使用javascript立即執行計算。 我需要找到一種方法,目標在JS第二<select> ID,因爲我呼應的選擇,我不喜歡這樣寫道:需要JavaScript中的預成形操作

<tr> <!-- first row, with css --> 
<td style="width:50%;">From</td> 
<td style="width:50%;"> 
    <select name="fromlevel" id="fromlevel" style="width:100%; text-align:center; font-weight:bold;"> 
     <?php 
     $i = 1; 
     while ($i < 91) { 
      echo ' 
      <option value=f' . $i . ' name=f' . $i . '>' . $i . '</option>'; 
      $i++; 
     } 
     ?> 
    </select> 
</td> 
</tr> 
<tr> <!-- second row, with css --> 
<td>To</td> 
<td> 
    <select name="tolevel" id="tolevel" style="width:100%; text-align:center; font-weight:bold;"> 
     <?php 
     $i = 1; 

     while ($i < 91) { 
      echo ' 
      <option value=t' . $i . ' name=t' . $i . '>' . $i . '</option>'; 
      $i++; 
     } 
     ?> 
    </select> 
</td> 
</tr> 

我引用與F1,F2,F3,F4等,和T1的ID ,t2,t3,t4等。我如何在JS中區分它們?下面

JS的作品,如果我只是refernce第一<select>爲$ I,即時通訊非常糟糕與JS的ID,我不知道如何使參考F $我

var level_current_prices = {}; 

for(var i = 1; i <= 90; i++) { 
    level_current_prices[i] = i; 
} 

function getCurrentLevel() { // current level, from 
    var levelSetPrice=0; 
    var theForm = document.forms["priceCalcForm"]; 
    var selectedLevel = theForm.elements["fromlevel"]; 
    levelSetPrice = level_current_prices[selectedLevel.value]; 
    return levelSetPrice; 
} 

function calculateTotal() { 
    var LevelPrice = getCurrentLevel(); 
    var divobj = document.getElementById('totalPrice'); 
    divobj.style.display='block'; 
    divobj.innerHTML = "Total Price For the Leveling $"+LevelPrice; 
} 

function hideTotal() { 
    var divobj = document.getElementById('totalPrice'); 
    divobj.style.display='none'; 
} 

document.forms['priceCalcForm'].fromlevel.onchange = function() { 
    calculateTotal(); 
} 
+0

我不完全明白你想要做什麼,但你試過'theForm.elements [「tolevel」]'?其中提到了第二個選擇。 – Shedokan 2013-02-23 21:54:41

+0

不是一個解決方案,但你應該引用你的html屬性,例如:'' – NickSlash 2013-02-23 22:26:43

回答

0

一點困惑你的問題。我想你在談論以下幾行?

for(var i = 1; i <= 90; i++) { 
    level_current_prices[i] = i; 
} 

預填充數據的對象,對於level_current_prices索引是一個字符串,不是數字(這將是陣列)。你可以在括號內做你想要的東西來生成一個密鑰,但是所有你需要的是level_current_prices['f'+i]

請澄清你的問題,如果這不是你的意思。

如果這是你想要的,你可以使用php預先生成對象(如JSON)。

<?php 
    $i=1; 
    $out = "{"; 
    while ($i<91) { 
    $out .= "\"t".$i."\"=".$i.","; 
    $i++; 
    } 
    $out .="};"; 
    echo "var level_current_prices = ".$out; 
?> 

它已經有一段時間了,因爲我已經使用php,所以你可能會做得更好:D。

+0

你可以使用數字作爲JavaScript對象的屬性名稱,強制轉換爲字符串。 'myObj [1]'和'myObj ['1']'最後引用相同的屬性。然而,指出這一點很好,即在對象中只使用連續的數字作爲屬性值意味着你可能確實可以逃脫一個數組。 – ajp15243 2013-02-23 23:02:40