2014-02-12 48 views
0

我有一系列的下拉列表在我的頁面中有不同的值,如有些值有點像「NA,1,2,3到100」其他有「NA ,1,2,3到50「和其他有不同的結束值,但都是以」NA「開頭JS獲得最大值和下拉列表的選定值

我正在編寫代碼來查找JS中每個值的選定值和百分比的總和。

我得到了它的選擇值的增加,但我沒有得到的百分比。 我想獲取所選下拉列表的最大值。

JS功能

function sum() { 
     var result = 0; 
     var sval = 0; 

     for (var f = 1; f<= 5; f++) { 
     var sval = document.getElementById('ddlist_'+f).value; 
     if(!isNaN(sval)) { 
      var sval = parseFloat(sval); 
      result = result + sval; 

     } 
     } 


     } 
    } 

    window.onload = sum; 

Total Value of the Selected List is in Var Result. 
I want to find the Maximum value of all list 

例下拉列表

<option value=NA> NA </option><option value="0">0</option><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option> 
<option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option> 
<option value="11">11</option><option value="12">12</option> 
<option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option> 
<option value="18">18</option><option value="19">19</option> 
<option value="20">20</option><option value="21">21</option><option value="22">22</option> 
<option value="23">23</option><option value="24">24</option><option value="25">25</option> 

輸出

<span id="maxtotal " style="color:#06F; font-weight:bold;"></span> 

總之,當選擇下拉列表中,我希望獲取選定價值和最後是最大的下拉列表的m值。

感謝您

+2

你可以發佈一個jsfiddle演示來重現這個問題嗎? – elclanrs

+0

JSBin:http://jsbin.com/sudom/1/edit。 –

+0

謝謝Klaster爲您的effor發佈jsbin。我會等待回覆 – user3300202

回答

0

您可以訪問options集合的HTMLSelectElement object像一個陣列。

function sum() { 
    var $ = function (str) { return document.getElementById(str); }, 
     f, ddlist, sval, mval, 
     result = 0, maxtotal = 0, percent; 

    // try 'ddlist1', 'ddlist2', .. and so on 
    f = 1; 
    while (ddlist = $('ddlist' + f++)) { 
    sval = ddlist.options[ddlist.selectedIndex].value; 
    mval = ddlist.options[ddlist.options.length - 1].value; 
    if (!isNaN(sval) && !isNaN(mval)) { 
     result += parseFloat(sval); 
     maxtotal += parseFloat(mval); 
    } 
    } 

    percent = (maxtotal > 0) ? result/maxtotal * 100 : 0; 

    $('maxtotal').innerHTML = result + ' of ' + maxtotal; 
    $('totalper').innerHTML = percent.toFixed(2) + ' %'; 
} 
+0

這是很激動我需要非常感謝你非常非常非常.... – user3300202

+0

你好親愛的,請你看看,它現在不工作。爲你的簡單,我把它放在這裏http://jsbin.com/sudom/14/ – user3300202

+0

我的錯誤,'''功能是問題。固定在上面。 – Tomalak

0

我想這是你想要acomplish什麼:http://jsfiddle.net/jK5Uq/

這裏沒有竅門,我幾乎沒有改變任何東西到你的代碼(原始版本),但HTML部分:

<select id='ddlist_1' onchange='sum()'> 
    <option value=NA> NA </option> 
    <option value="0">0</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
</select> 
<select id='ddlist_2' onchange='sum()'> 
    <option value=NA> NA </option> 
    <option value="5">5</option> 
    <option value="6">6</option> 
    <option value="7">7</option> 
    <option value="8">8</option> 
    <option value="9">9</option> 
    <option value="10">10</option> 
</select> 
<select id='ddlist_3' onchange='sum()'> 
    <option value=NA> NA </option> 
    <option value="11">11</option> 
    <option value="12">12</option> 
    <option value="13">13</option> 
    <option value="14">14</option> 
    <option value="15">15</option> 
    <option value="16">16</option> 
    <option value="17">17</option> 
</select> 
<select id='ddlist_4' onchange='sum()'> 
    <option value=NA> NA </option> 
    <option value="18">18</option> 
    <option value="19">19</option> 
    <option value="20">20</option> 
    <option value="21">21</option> 
    <option value="22">22</option> 
    <option value="23">23</option> 
    <option value="24">24</option> 
    <option value="25">25</option> 
</select> 
<p id="maxtotal" /> 
<p id="totalper" />