2014-02-24 100 views
0

我只是試圖讓一個簡單的計算與所選選項的值,但是我得到錯誤的結果: 拾波器9和returnTime 10,它沒有給(必須是酵母)選擇選項有什麼問題?

取件時間11和14 returnTime,它給啊(這是正確的)所以它給出正確的結果與一些具體的數字,並與一些數字不..

這裏是(皮卡)選擇選項:

<select id="ophalenUur" class="timePicker selectOption"> 
    <option value="-">Kies Tijd</option> 
    <option value="8">08.00</option> 
    <option value="8.5">08.30</option> 
    <option value="9">09.00</option> 
    <option value="9.5">09.30</option> 
    <option value="10">10.00</option> 
    <option value="10.5">10.30</option> 
    <option value="11">11.00</option> 
    <option value="11.5">11.30</option> 
    <option value="12">12.00</option> 
    <option value="12.5">12.30</option> 
    <option value="13">13.00</option> 
    <option value="13.5">13.30</option> 
    <option value="14">14.00</option> 
    <option value="14.5">14.30</option> 
    <option value="15.">15.00</option> 
    <option value="15.5">15.30</option> 
    <option value="16">16.00</option> 
    <option value="16.5">16.30</option> 
    <option value="17">17.00</option> 
    <option value="17.5">17.30</option> 
    <option value="18">18.00</option> 
    <option value="18.5">18.30</option> 
    <option value="19">19.00</option> 
    <option value="19.5">19.30</option> 
    <option value="20">20.00</option> 
</select> 

和JS:

var pickUp = 0; 
var returnTime =0; 

$('#ophalenUur').change(function() { 
    pickUp = $('#ophalenUur option:selected').val(); 
    $('.pickUp').text("PickUp: " + pickUp); 
}); 

$('#inleverenUur').change(function() { 
    returnTime = $('#inleverenUur option:selected').val(); 
    $('.returntime').text("return: " + returnTime); 

    if(returnTime > pickUp){ alert("yea"); 
    } else { alert("no"); } 
}); 

小提琴:http://jsfiddle.net/jLAaq/27/

這裏有什麼問題?我找了好幾個小時,我看不出:/

+0

parseFloat()... – sinisake

+0

你是比較文本,而不是浮分析它們和檢查車況 –

回答

2

,因爲你正在做一個字符串比較

var pickUp = 0; 
var returnTime = 0; 
var totalExtra = 0; 

$('#ophalenUur').change(function() { 
    //conver the value string to number by prfixing it with + or you can use parseFloat(this.value) 
    pickUp = +this.value; 
    $('.pickUp').text("PickUp: " + pickUp); 
}); 

$('#inleverenUur').change(function() { 
    returnTime = +this.value; 
    $('.returntime').text("return: " + returnTime); 

    if (returnTime > pickUp) { 
     alert("yea"); 
    } else { 
     alert("no"); 
    } 
}); 

演示:Fiddle

+1

剛澄清,爲什麼你使用'+ this.value'而不是'parseFloat(this.value)'? – peter

+0

@zahorak它是短9個字符:) ..也感謝帶來parseFloat()在我的意見我說parseInt() –

+0

是的,這是真的我只是想知道這是一個很好的風格或「髒」的黑客 – peter

1

我想原因可能是returnTime和皮卡是字符串。所以「9」>「10」。 嘗試使用parseFloat函數來解析returnTime和pickUp。

1

您正在比較整數作爲字符串。您可以使用parseFloat方法

Demo Link

CODE:

var pickUp = 0; 
var returnTime =0; 
var totalExtra = 0; 

$('#ophalenUur').change(function() { 
pickUp = $('#ophalenUur option:selected').val(); 
    $('.pickUp').text("PickUp: " + pickUp); 
}); 

$('#inleverenUur').change(function() { 
returnTime = $('#inleverenUur option:selected').val(); 
    $('.returntime').text("return: " + returnTime); 
if(parseFloat(returnTime) > parseFloat(pickUp)){ 
     alert("yea"); 
    }else{ 
    alert("no");   
    } 
}); 
+0

我寧願使用parseFloat ()。嘗試選擇12.00和12.30。 :) – sinisake

+0

是的,那是正確的。它當時沒有點擊我。我改變了我的答案。非常感謝 –