webForumDet fria alternativet

Fel i koden lr?

JavaScript

2 svar · 169 visningar · startad av bigsky

Medlem sedan maj 2002821 inlägg
Frågan#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.1dc6f849
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)