2014-02-24 64 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

是的,那是正确的。它当时没有点击我。我改变了我的答案。非常感谢 –