webForumDet fria alternativet

Aktivera ett eller flera javascript

4 svar · 417 visningar · startad av Krekan

KrekanMedlem sedan dec. 200214 inlägg
#1

Hej!
Har ett litet problem (i alla fall för mig) som jag skulle behöva hjälp att lösa. I mitt CMS system så ska en användare kunna använda sig av ett skript för att visa en liten nedräknare till ett visst datum. Meningen är att man skall kunna lägga in flera stycken av dessa scripten genom att skicka flera olika datum (+ lite annan info tex i vilken DIV det skall visas) till funktionen. Har just nu gjort så att skriptet aktiveras när man klickar på en länk på sida för att se om det fungerar som det ska och det gör det.

Men jag vill ju inte att man själv ska behöva aktivera det. OK, varför då inte lägga det i BODY onload? Har funderat på detta men eftersom jag inte vet hur många nedräknare som kan finnas på sidan vet jag inte hur jag ska kunna styra detta.

Har kollat på window.onload men hur kan man trigga det utan att göra någonting. Det optimala hade varit om man i varje DIV-tagg som man skapar hade kunnat köra igång skriptet därifrån men går det? Och i sådana fall hur?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#2

DIV'arna skapas väl med ett skripåt, eller hur? Då kan du väl aktivera nedräkningsskriptet därifrån också? Annars skulle jag gärna kolla på din kod så kanske jag kan hjälpa dig mer exakt.

KrekanMedlem sedan dec. 200214 inlägg
#3

Vi ska se vad vi kan göra åt det. Så här är i alla fall det Javascript jag använder. Det måste modifieras ytterligare sen, men det ska nog lösa sig om man bara får aktivieringen att fungera.

<script language="JavaScript" type="text/javascript">
	/*
	Count down until any date script-
	By JavaScript Kit ([url]www.javascriptkit.com[/url])
	Over 200+ free scripts here!
        Modified by Christian, 2004-04-21
	*/

	var montharray=new Array("Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec")

	function countdown(yr,m,d, beforetext, currenttext)
	{
		var today=new Date()
		var todayy=today.getYear()
		if (todayy < 1000)
		todayy+=1900
		var todaym=today.getMonth()
		var todayd=today.getDate()
		var todaystring=montharray[todaym]+" "+todayd+", "+todayy
		var futurestring=montharray[m-1]+" "+d+", "+yr
		var difference=(Math.round((Date.parse(futurestring)-Date.parse(todaystring))/(24*60*60*1000))*1)
		if (difference==0)
			document.all.test.innerText = currenttext
		else if (difference>0)
			document.all.test.innerText = "Bara "+difference+" dagar till "+beforetext
	}
</script>

För att sedan aktivera skriptet har jag just nu följande:

<div id=test></div>
<a href="javascript:countdown(2005,1,1, 'Christians födelsedag!', 'Idag är det Christians födelsedag. Glöm inte det!!');">Klicka</a>

Jag vill ju ha bort länken och endast ha kvar DIV-arna. Användaren kan inte själv skapa egna skript (inom <script>-taggar dvs). Min förhoppning är/var att man endast behöver skapa en ny div-tagg och i den aktivera skriptet. Men det kanske finns någon bättre lösning?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#4

Hur ser saker ut på server-sidan?

nitro2k01Medlem sedan aug. 20037 630 inlägg
#5

Duger detta?

 
<script language="JavaScript" type="text/javascript">
	/*
	Count down until any date script-
	By JavaScript Kit ([url]www.javascriptkit.com[/url])
	Over 200+ free scripts here!
        Modified by Christian, 2004-04-21
	*/

	var montharray=new Array("Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec")

	function countdown(inarray)
	{
		yr = inarray [0];
		m = inarray [1];
		d = inarray [2];
		beforetext = inarray [3];
		currenttext = inarray [4];
		var outtext = "";
		var today=new Date()
		var todayy=today.getYear()
		if (todayy < 1000)
		todayy+=1900
		var todaym=today.getMonth()
		var todayd=today.getDate()
		var todaystring=montharray[todaym]+" "+todayd+", "+todayy
		var futurestring=montharray[m-1]+" "+d+", "+yr
		var difference=(Math.round((Date.parse(futurestring)-Date.parse(todaystring))/(24*60*60*1000))*1)
		if (difference==0)
			outtext = currenttext
		else if (difference>0)
			outtext = "Bara "+difference+" dagar till "+beforetext
		document.write("<div>" + outtext + "</div>")
	}

</script>
<script language="JavaScript" type="text/javascript">
// Värdena under måste fyllas i av servern!
birthdays = [

	[2005,1,1, 'Christians födelsedag!', 'Idag är det Christians födelsedag. Glöm inte det!!'],
	[2004,4,30, 'Kungens födelsedag!', 'Idag är det Kungens födelsedag. Ska det vara så märkvärdigt?!?'],
	[2004,12,31, 'Sylvesters namnsdag!', 'Sylvesters namnsdag. Nyårsafton heter Saint Sylvestre på franska!']

]

for (i in birthdays){
	countdown(birthdays[i])
}

</script>

<div id=test></div>
<a href="javascript:countdown([2005,1,1, 'Christians födelsedag!', 'Idag är det Christians födelsedag. Glöm inte det!!']);">Klicka</a>
121 ms totalt · 3 externa anrop · cache AV · v20260731051352-full.56cc9887
0 ms — hämta statistik (cache)
0 ms — hämta forumlista (cache)
119 ms — hämta tråd, inlägg och bilagor (db)