Fel i koden lr?

JavaScript

2 svar · 173 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Trådstart#1

Är det någon som kan se något fel i följande kod?

<script type="text/javascript">
	function rebuildManad(mobj,dobj){
	var d=new Date(new Date().getFullYear(),mobj.selectedIndex+1,0).getDate();
	dobj.length=d;
	for(var n=0;n<d;n++){
		dobj[n].value=dobj[n].text=(n<9)?"0"+(n+1):n+1;
	  }
    }
    function update2(obj){
	var d=new Date(new Date().getFullYear(),obj.elements['outwardmonth'].selectedIndex,obj.elements['outwarddate'].selectedIndex+2);
	obj.elements['returndate'].length=new Date(d.getFullYear(),d.getMonth()+1,0).getDate();
	for(var n=0;n<new Date(d.getFullYear(),d.getMonth()+1,0).getDate();n++){
		obj.elements['returndate'][n].value=obj.elements['returndate'][n].text=(n<9)?"0"+(n+1):n+1;
	}
	obj.elements['returndate'].selectedIndex=d.getDate()-1;
	obj.elements['returnmonth'].selectedIndex=d.getMonth();
	obj.elements['returntime'].selectedIndex=obj.elements['outwardtime'].selectedIndex;
    }
    window.onload=function(){
	document.forms['frmMyTravel'].elements['outwarddate'].selectedIndex=new Date().getDate()-1;
	document.forms['frmMyTravel'].elements['outwardmonth'].selectedIndex=new Date().getMonth();
	document.forms['frmMyTravel'].elements['outwardtime'].selectedIndex=new Date().getHours();
	rebuildManad(document.forms['frmMyTravel'].elements['outwardmonth'],document.forms['frmMyTravel'].elements['outwarddate']);
	update2(document.forms['frmMyTravel']);
    }
    </script>

IE klagar på att 'elements.returndate' är null eller inte ett objekt.

Medlem sedan maj 2002821 inlägg
#2

Det löste sig... man ska inte anropa en funktion som inte behövs.

Medlem sedan okt. 20023 030 inlägg
#3

1. Vad är obj? (Gissar form)
2. Vad är returndate? (Gissar select)

Sedan tycker jag att denna rad ser lite flummig ut men jag är väl inte direkt världsbäst på javascript.

obj.elements['returndate'][n].value=obj.elements['returndate'][n].text=(n<9)?"0"+(n+1):n+1;

Tror det borde vara:

obj.elements['returndate'][n].value=((n<9)?'0'+(n+1):n+1);

Detta förutsätter såklart att returndate är en select som jag gissar samt att Option-objektet obj.elements['returndate'][n] redan existerar?

252 ms totalt · 4 externa anrop · v20260731065814-full.d34c6d5a
117 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)