2012-06-19 81 views
2

我正在開發一個費率模塊,計算他們花費多少時間用電話卡獲得多少分鐘。例如,撥打南非的費用爲每分鐘0.015美元。我想進行下面的數學運算:將值分配給<option>或.val()的國家

SouthAfrica *分鐘。或者在這種情況下:0.015 * 200,並獲得3美元的結果。

我的問題是:我把下面的值或者在:

代碼版本1: HTML:

<option value="0.015">South Africa</option> 

JS:

var inputCountries =$('#CountryName').val(); 
    var inputMinutes = $('#minutes').val(); 
    var result = parseInt(inputMinutes)*parseFloat(inputCountries); 

代碼版本2: HTML :

<option value="SouthAfrica">South Africa</option> 

JS:

var SouthAfrica = 0.015; 
    var inputCountries =$('#CountryName').val(); 
    var inputMinutes = $('#minutes').val(); 
    var result = parseInt(inputMinutes)*parseFloat(inputCountries); 

代碼版本3: HTML:

<option value="SouthAfrica">South Africa</option> 

JS:

var inputCountries =$('#CountryName').val(
      SouthAfrica = 0.015; 
    ); 
    var inputMinutes = $('#minutes').val(); 
    var result = parseInt(inputMinutes)*parseFloat(inputCountries); 

這是我的第一個JavaScript項目,學習,我去,所以我會感謝任何消息來解釋爲什麼上面的代碼工作/不工作。這裏是我的代碼的其餘部分供參考。

注:請不要更正我的代碼的REST,我仍在研究和學習。然而,任何提示或資源來弄清楚其餘的代碼將非常感激。這個話題的重點是分配每個國家的價值。我試圖找出如何使用幾種不同的資源來解決問題,但已經空了。感謝您的時間!

HTML:

<form name="calculator"> 
    <!-- 
    Countries 
    --> 
    <label><span><!--[Write as something else]-->Where do you want to call?</span> 
    </label> 

    <select id="CountryName" class="rates"> 
    <option>Select...</option> 
    <option value=" ?? ">South Africa</option <!--This list is truncated to keep the post short--> 
    </select> 
    <label>Minutes to call</label> 
    <input id="minutes" type="text" class="rates" /><br /> 

    <input type="button" name="submit" id="submit" value="Submit" /> 

    <input type="button" name="clear" id="clear" value="Clear" /> 
    <br /> 
    </form> 
    <div id="RatesResult"> 
    <p> 
    <span id="total"></span> for 
    <span id="afterMin"></span> minutes. <!--This section, #afterMin, is still being worked on, any hint/resources on how to print what user wrote in #minutes into this section would be appreciated --> 

    </p><br /> 
    </div> 
    </div> 

JS:

 $(document).ready(function() { 
    $('#submit').submit(function() { 
var total = 0; 
    var SouthAfrica = 0.015, Canada = 0.015 ; //truncated list    
    var inputCountries =$('#CountryName').val(); 
var inputMinutes = $('#minutes').val(); 
var result = parseInt(inputMinutes)*parseFloat(inputCountries); 
$('#total').html(formatCurrency(result)); 
     }); 
    }); 

回答

1

最簡單的答案,對你來說,是要創建這樣一個對象:(注意,所有的JavaScript中的對象是有效的包含HashMap/dictionary<string,value>類型

var rates = { 
    'SouthAfrica': 0.0015, 
    'USA' : 0.0001, 
    ..... 
    'France' : 0.0005 
} 

//HTML 
<option value="SouthAfrica">South Africa</option> 
<option value="USA">United States of America</option> 

然後當你從select中獲得val時,如$('#CountryName').val();你可以做一個查找的速度對象,像這樣:

1

我會建議你把速度(所以0.015)作爲值在您的下拉列表:

<select id="CountryName" class="rates"> 
    <option value="-1">Select...</option> 
    <option value="0.015">South Africa</option 
</select> 

你然後將使用下拉列表中的選定值執行簡單的計算(如您所述)。我建議在我的示例中添加-1值,然後您可以測試以確保它們選擇的值大於或等於零(您可能有一個免費的國家,即0)。

+0

然而,這不便攜,並且將費率與選擇緊密耦合。最好是基於鍵的查找(現在的計算機速度非常快)和非緊密耦合的代碼。 – jcolebrand

+1

我選擇這個例子作爲一個簡單的方法,很容易從點到點。特別是隨着user1466745剛剛開始他的發展之旅!不過,我同意如果你想改變前端等,我的解決方案不會那麼便攜。 – melodiouscode