2013-07-19 186 views
0

下面的代碼返回小數,但它並不比.00返回值以外,當我有我的值設置爲0.67,1.33,2.67,等toFixed();只返回.00

$(function($) { 
    $('#CourseMenu select').change(function() { 
     var sum = 0; 
     $('#CourseMenu select').each(function(idx, elm) { 
      sum += parseInt(elm.value, 10); 
     }); 

    $('#total_potential').html(Math.min(sum,72).toFixed(2)); 
    }); 
}); 

這裏的其中JS從拉動數據...

  <legend>Transfer Course Information</legend> 
<label for="School Int.">School Int.</label> 
      <input name="School Int." type="text" size="6" maxlength="6" /> &nbsp; 

      <label for="ID">ID</label> 
      <input name="ID" type="text" id="ID" size="8" /> &nbsp; 

      <label for="Name">Name</label> 
      <input name="Name" type="text" id="Name" size="25" />&nbsp; 

      <label for="Grade">Grade</label> 
      <input name="Grade" type="text" id="Grade" size="2" />&nbsp; 

      <label for="Credits">Credits</label> 
       <select name="Credits" id="Credits"> 
        <option value="0">Select Credit</option> 
        <option value="0.67">1 QtrCr.</option> 
        <option value="1.33">2 QtrCr.</option> 
        <option value="2.00">3 QtrCr.</option> 
        <option value="2.67">4 QtrCr.</option> 
        <option value="3.33">5 QtrCr.</option> 
        <option value="4.00">6 QtrCr.</option> 
        <option value="4.67">7 QtrCr.</option> 
        <option value="5.33">8 QrtCr.</option> 
        <option value="6.00">9 QtrCr.</option> 
        <option value="6.67">10 QtrCr.</option> 
        <option value="1">1 SemCr.</option> 
        <option value="2">2 SemCr. </option> 
        <option value="3">3 SemCr.</option> 
        <option value="4">4 SemCr.</option> 
        <option value="5">5 SemCr.</option> 
        <option value="6">6 SemCr.</option> 
        <option value="7">7 SemCr. </option> 
        <option value="8">8 SemCr.</option> 
        <option value="9">9 SemCr.</option> 
        <option value="10">10 SemCr.</option> 
        </select> 

      Transferrable 
      <input name="COM105" type="checkbox" id="COM1" /> 

我想這一點,但它沒有工作...

$(function($) { 
    $('#CourseMenu select').change(function() { 
     var sum = 0; 
     $('#CourseMenu select').each(function(idx, elm) { 
      sum += parseInt(elm.value, 10); 
     }); 

    $('#total_potential').html(Math.min(sum,72).toFixed(2).replace(".00", "")); 
    }); 
}); 
+0

那麼,爲什麼你使用parseInt而不是parseFloat? –

回答

1

您使用的是parseInt(),它丟棄了分數。改爲使用parseFloat()

$(function($) { 
    $('#CourseMenu select').change(function() { 
     var sum = 0; 
     $('#CourseMenu select').each(function(idx, elm) { 
      sum += parseFloat(elm.value); 
     }); 

    $('#total_potential').html(Math.min(sum,72).toFixed(2)); 
    }); 
}); 
+0

這個演示似乎適用於這個變化:http://jsfiddle.net/jvhHR/ – Ian

0

您在.toFixed()調用之前的值上調用了「parseInt」,這會將這些浮點轉換爲整數。嘗試「parseFloat」,而你應該全部設置。

+0

我只是想通了。 parseInt只會返回.00。謝謝。在11分鐘內,我會接受你的回答。 – webfrogs

+1

是的,你知道了。 parseInt()只是在小數點後面放下所有東西,所以如果你要處理浮點數,你想使用parseFloat() – user1391445

1

parseInt方法解析字符串到整數(整數)。一個簡單的方法將字符串轉換爲數字在JavaScript中,同時保持小數部分使用一元加運算:

sum += +elm.value; 

優勢/劣勢此相比,parseFloat是,它是更嚴格的:如果字符串以數字開頭然後是字母,如"123abc",這將返回一個NaN,而parseFloat將返回字母前可以解析的數字。

+1

如果你'+ elm.value' – Ian

+0

當然,單數加號也應該可以工作,儘管我傾向於使用這個「trick」而不是'parseFloat',這主要是因爲更嚴格的解析,而不是縮短碼。 – Joni

+0

我不確定你的意圖:)那麼你主要是因爲其他原因?就是想。 +和'+'有相同的效果 – Ian

相關問題