2014-01-25 3 views
0

Привет, просто хочу спросить, как я могу получить ответ здесь? Я получаю NaN tho, я попытался поместить parseFloat для каждой переменной. также, если пользователь выбирает NO из радио-ящика, значение для следующего вопроса будет равно нулю. Спасибо за большую помощь!Javascript Computation

<script type="text/javascript"> 
$(document).ready(function() { 
    $("input[name=q-1], input[name=q-2], input[name=q-4], input[name=q-6]").change(function(e) { 

     var $row = $(this).parent(); 
     var cooling_area_sqm = $row.find("input[name=q-1]").val(); 
     var people = $row.find("input[name=q-2]").val(); 
     var glass_walls_m = $row.find("input[name=q-4]").val(); 
     var ceiling_m = $row.find("input[name=q-6]").val(); 

     var sqm_tr = 18; 
     var sqm_tr_hp = 1.25; 
     var heat_gain = 0.3; 
     var solar_penetration = 0.2; 
     var ceiling_height = 1.1; 

     var mTons = 0; 
     var mHP = 0; 
     var mHeatGainHP = 0; 
     var mGlassWallsHP = 0; 
     var mCeilingHP = 0; 
     var temp_var = 0; 

      mTons = parseFloat(mTons); 
      mHP = parseFloat(mHP); 
      mHeatGainHP = parseFloat(mHeatGainHP); 
      mGlassWallsHP = parseFloat(mGlassWallsHP); 
      mCeilingHP = parseFloat(mCeilingHP); 

      mTons = cooling_area_sqm/sqm_tr; 
      <!-- start of error --> 
          mHP = mTons * sqm_tr_hp; 
      mHeatGainHP = (people * heat_gain)/10; 
      mHP = mHP + (mHP * mHeatGainHP); 
      mGlassWallsHP = glass_walls_m * solar_penetration; 
      mHP = mHP + mGlassWallsHP; 
      mCeilingHP = ceiling_m * ceiling_height; 
      mHP = mHP * mCeilingHP; 

     $(".capacity").val(mHP); 

     <!-- end of error --> 
    }); 
}); 
</script> 
<form method="post"> 
<ol> 
    <li> 
     <label>Question?</label><br/> 
     <input class="input-text q-input" type="text" name="q-1" value="<?php echo $cooling_area_sqm; ?>"/>&nbsp;sqm 
    </li> 
    <li> 
     <label>Question?</label><br/> 
     <input class="input-text q-input" type="text" name="q-2" value="<?php echo $people; ?>"/>&nbsp;people 
    </li> 
    <li> 
     <label>Question?</label><br/> 
     <input type="radio" name="q-3" value="yes-3"/>&nbsp;Yes 
     <br/> 
     <input type="radio" name="q-3" value="no-3"/>&nbsp;No 
     <br/> 
    </li> 
    <li> 
     <label>Question?</label><br/> 
     <input class="input-text q-input" type="text" name="q-4" value="<?php echo $glass_walls_m; ?>"/>&nbsp;meter/s 
    </li> 
    <li> 
     <label>Question?</label><br/> 
     <input type="radio" name="q-5" value="yes-5"/>&nbsp;Yes 
     <br/> 
     <input type="radio" name="q-5" value="no-5"/>&nbsp;No 
    </li> 
    <li> 
     <label>Question?</label><br/> 
     <input class="input-text q-input" type="text" name="q-6" value="<?php echo $ceiling_m; ?>"/>&nbsp;meter/s 
     <div class="add-info"> 
      example: 4 meters + 1 meter more 
     </div> 
    </li> 
</ol> 
</form> 

<div class="capacity-cont"> 
<label>Question?</label><br/> 
<input class="input-text q-input capacity" type="text" name="c-7" disabled />&nbsp;HP 
</div> 

http://jsfiddle.net/Uk5bN/

+0

Где вы получаете NAN? –

+0

Я получаю его из переменной mHP. – user3234055

+1

@ user3234055, пожалуйста, уменьшите свой код до минимума, необходимого для воспроизведения вашей проблемы. Это немного длиннее. Кроме того, укажите, какая строка выводит ошибку (некоторая отладка может помочь там ...). – Trojan

ответ

1

Там в другие вещи, которые я бы изменить, но минимально сделать:

var $row = $(this).closest('form'); 

http://jsfiddle.net/Uk5bN/1/

Когда вы делаете $row = $(this).parent(), вы получаете в li, который является одноранговым, а не родительским для другого li s, которые содержат поля, которые вы пытаетесь сделать $.find(). form - это прежде всего input, который вы пытаетесь выбрать.

+1

СПАСИБО НА ЭТО! ТЕПЕРЬ РАБОТАЕТ! СПАСИБО-СПАСИБО! – user3234055

+0

Всегда хорошо, когда план объединяется. – Andy

0

Имейте в виду, что parseFloat ("") == NaN. Для удаления ваших вычислений требуется только один операнд.

Смежные вопросы