webForumDet fria alternativet

Funktion som inte körs

10 svar · 390 visningar · startad av MickeA.com

MickeA.comMedlem sedan feb. 20034 441 inlägg
#1

Hej!

Har gjort följande för att få dagens datum i formen "xxxx-xx-xx" visad i en textruta:

<script type="text/javscript">
<!--
function setDatum(){
	var nu = new Date();
		d = nu.getDate();
		m = nu.getMonth();
		y = nu.getYear();
		document.frm_news.strDate.value = y + "-" + m + "-" + d;
		//alert(date + "-" + months + "-" + year;);
}
setDatum();
//-->
</script>

Problemet är att inget verkar funka, inte ens om jag kör en alert(); så händer inget.

Troligvis beror det på att funktionen inte körs, så nu undrar jag, hur ska jag få igång den?
Sidan detta ska köras på innehåller inte någon bodytagg, så kan inte köra en vanlig "onload".

Tack!

dectgapMedlem sedan sep. 20021 655 inlägg
#2

Titta noga på

<script type="text/javscript">

Ja, det är förargligt :)

MickeA.comMedlem sedan feb. 20034 441 inlägg
#3

dectgap skrev:

Ja, det är förargligt :)

Nä, snarare sorgligt...
Att en person kan ägna tio minuter åt att göra ett script som inte funkar, han felsöker det om och om igen, han postar t.o.m en tråd om detta problem på ett stort forum så att alla kan se.
Och allt detta bara för att bekräfta att denna person är helt dum i huvudet ;)

För er som inte är med i svängarna kan jag tillägga att denna person är jag ;)

Men nu till en helt annan sak, men som har med scriptet att göra.
Om dagens datum är mindre än TIO, så vill jag att en nolla (0) ska läggas till framför dagen, så det blir "01", "02" osv.

Har gjort såhär:

<!--
function setDatum(){
	var nu = new Date();
		d = nu.getDate();
		m = nu.getMonth();
		y = nu.getYear();
		if (d.length < 10){
			d2 = "0" + d;
		}else{
			d2 = d;
		}
		//document.frm_news.strDate.value = d + "-" + m + "-" + y;
		alert(y + "-" + m + "-" + d2);
}
setDatum();
//-->

Men det funkar inte.

Vore tacksam för svar!

dectgapMedlem sedan sep. 20021 655 inlägg
#4

Jag brukar skapa en liten funktion som lägger till en etta i början:

function az(theInt){
	return (theInt<10) ? "0"+theInt : theInt;
}

function setDatum(){
	var nu = new Date();
		var d = nu.getDate();
		var m = nu.getMonth();
		var y = nu.getYear();
		//document.frm_news.strDate.value = d + "-" + m + "-" + y;
		alert(y + "-" + az(m) + "-" + az(d));
}
setDatum();
nitro2k01Medlem sedan aug. 20039 342 inlägg
#5

Titta noga på:

d.length < 10

Om längden är tio siffror så är du uppe i den tio miljardte oktober...

d.length < 2
//alt
d < 10

Funkar bättre

dectgapMedlem sedan sep. 20021 655 inlägg
#6

nitro2k01 skrev:

Om längden är tio siffror så är du uppe i den tio miljardte oktober...

d.length < 2
//alt
d < 10

Funkar bättre

Fast variabler av typen 'number' (d i exemplet) har ingen längd. Det är, så vitt jag vet, bara arrayer och strängar som har det.

Att jämföra med 10 är rätt väg att gå, om man inte vill göra om d till en sträng:

(new String(d)).length < 2
MickeA.comMedlem sedan feb. 20034 441 inlägg
#7

Inget verkar funka, har provat det som står ovan, men ändå blir det ingen "0'a", framför månaderna 1-9.

Kan ngn snäll själ visa hur mitt script ska se ut, samt hur jag får det att visas i ett formulärsfält, för här får jag bara felmess om att "blabla är null eller inte ett objekt".

Tack!

dectgapMedlem sedan sep. 20021 655 inlägg
#8

MickeA.com skrev:

Inget verkar funka, har provat det som står ovan, men ändå blir det ingen "0'a", framför månaderna 1-9.

Kan ngn snäll själ visa hur mitt script ska se ut, samt hur jag får det att visas i ett formulärsfält, för här får jag bara felmess om att "blabla är null eller inte ett objekt".

Tack!

Detta ger en alert med strängen "2004-10-14":

<script type="text/javascript">
function az(theInt){
	return (theInt<10) ? "0"+theInt : theInt;
}

function setDatum(){
	var nu = new Date();
	var d = nu.getDate();
	var m = nu.getMonth();
	var y = nu.getFullYear();

	alert(y + "-" + az(m) + "-" + az(d));
}

setDatum();
</script>

Om du ska försöka ändra innehållet i ett HTML-element måste du se till att elementet finns när du försöker ändra på det - annars får du just felmeddelandet

'document.getElementById(...)' är null eller inte ett objekt

(Eller vad du använder för metod för att komma åt elementet.)

Vi skriver om till

<script type="text/javascript">
function az(theInt){
	return (theInt<10) ? "0"+theInt : theInt;
}

function setDatum(){
	var nu = new Date();
	var d = nu.getDate();
	var m = nu.getMonth();
	var y = nu.getFullYear();

	document.frm_news.strDate.value = d + "-" + az(m) + "-" + az(y);
}

window.onload = setDatum;
</script>
MickeA.comMedlem sedan feb. 20034 441 inlägg
#9

Tack!

Kanon, det där funkar ju klockrent, precis vad jag behöver.
Men kom på en sak precis, Javascript funkar väl lika som Flash när det gäller datum, dvs. att getMonth() returnerar ett tal mellan 0-11, för måndaderna.

Problemet är ju då att den i mitt fall kommer visa fel, jag vill ju addera "1" till getMonth();

Så, hur ska jag göra för att fixa det här, får lite hjärnsläpp med tanke på den extra nollan som ska läggas till i vissa fall?

dectgapMedlem sedan sep. 20021 655 inlägg
#10

Ändra bara

var d = nu.getDate();

till

var d = nu.getDate() + 1;
MickeA.comMedlem sedan feb. 20034 441 inlägg
#11

Ahh, just det, har precis gjort det och såg sen det här ;)

Tack för all hjälp!

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)