Click to See Complete Forum and Search --> : NaN problem


zuzupus
07-09-2003, 04:27 AM
hi,
iam getting NaN:Nan instead of gettting the difference in format something like hh:mm or 01:02
<form name=tstest>
<td>
<select name="von" size="1">
<option value="10:40">10:40</option>
</select>
</td>
<td>
<select name="bis" size="1">
</select>
<input type="button" name="now" value="Insert" onclick="calculateDiff();insertTime()">
</td>
<td>
<input size="2" type="text" value="0" name="ist" readonly></td>
</form>
<script type="text/javascript">
function calculateDiff()
{

var time =document.forms["tstest"].elements["von"].value.split(":");
totime=parseInt(time[0]*60)+parseInt(time[1]);
var time1 =document.forms["tstest"].elements["bis"].value.split(":");
time2=parseInt(time1[0]*60) +parseInt(time1[1])
diff=(time2-totime)
min=(diff%60)
hrs=(diff-min)/60
if (hrs<=9)
hrs="0"+hrs
if(min<=9)
min="0"+min
document.forms["tstest"].elements["ist"].value =hrs+":"+min;

}
</script>
<script type="text/javascript">
x = 0;
function insertTime() {
time = new Date();
hour = time.getHours();
minute = time.getMinutes();
hour = time.getHours().toString().length < 2 ? "0"+hour : hour;
minute = minute.toString().length < 2 ? "0"+minute : minute;
if (x == 0) {
anOption = document.createElement("option")
document.tstest.bis.options.add(anOption, 0)
anOption.innerText = hour+":"+minute
anOption.Value = hour+":"+minute
x = 1;
}
else {
document.tstest.bis.options[0].innerText = hour+":"+minute
document.tstest.bis.options[0].Value = hour+":"+minute
}
document.tstest.bis.options.selectedIndex = 0;
}
</script>

if anybody try to point out this problem will really appreciate as

Fang
07-09-2003, 05:26 AM
There are two probloms:
1. Reverse calls to functions in onclick. You can't do the calculation untill the option has been added.
2. Change the add option (4 lines) to:
document.tstest.bis.options[document.tstest.bis.options.length]=new Option(hour+":"+minute, hour+":"+minute);

zuzupus
07-09-2003, 05:38 AM
i didnt get u where i have to add the above line where sorry for ur inconvenience
i used like this but still geting NaN
<input type="button" name="now" value="Insert" onclick="insertTime();calculateDiff()">
if (x == 0) {
anOption = document.createElement("option")
document.tstest.bis.options.add(anOption, 0)
anOption.innerText = hour+":"+minute
document.tstest.bis.options[document.tstest.bis.options.length]=new Option(hour+":"+minute, hour+":"+minute);
//anOption.Value = hour+":"+minute
x = 1;
}
else {
document.tstest.bis.options[0].innerText = hour+":"+minute
document.tstest.bis.options[0].Value = hour+":"+minute
}
document.tstest.bis.options.selectedIndex = 0;

thanks

Fang
07-09-2003, 08:49 AM
The incorrect option creation causes the NaN, try the following:

x = 0;
function insertTime() {
time = new Date();
hour = time.getHours();
minute = time.getMinutes();
hour = time.getHours().toString().length < 2 ? "0"+hour : hour;
minute = minute.toString().length < 2 ? "0"+minute : minute;
if (x == 0) {
document.tstest.bis.options[document.tstest.bis.options.length]=new Option(hour+":"+minute, hour+":"+minute);
x = 1;
}
else {
document.tstest.bis.options[0].innerText = hour+":"+minute
document.tstest.bis.options[0].Value = hour+":"+minute
}
document.tstest.bis.options.selectedIndex = 0;
}

zuzupus
07-09-2003, 09:03 AM
sorry still its not working ...but any way thanks for helping me
but whgen i tried this one..its working fine :)

if (x==1) {
document.tstest.bis.options[document.tstest.bis.options.length-1] = null;
}
var anOption = new Option(hour+":"+minute, hour+":"+minute);
document.tstest.bis.options[document.tstest.bis.options.length] = anOption
x = 1;
document.tstest.bis.options.selectedIndex = document.tstest.bis.options.length-1;

thanks