webForumDet fria alternativet

Endast visa en länk ifall besökaren klickar på x antal länkar

Webbutveckling

1 svar · 676 visningar · startad av Help

Medlem sedan feb. 20101 inlägg
Frågan#1

Hej,

jag har en sida med:
Reklamlänk 1, öppnas i nytt fönster
Reklamlänk 2, öppnas i nytt fönster
Reklamlänk 3, öppnas i nytt fönster
Reklamlänk 4, öppnas i nytt fönster
Reklamlänk 5, öppnas i nytt fönster
Reklamlänk 6, öppnas i nytt fönster
Reklamlänk 7, öppnas i nytt fönster
Reklamlänk 8, öppnas i nytt fönster
Reklamlänk 9, öppnas i nytt fönster
Reklamlänk 10, öppnas i nytt fönster
Reklamlänk 11, öppnas i nytt fönster

Tanken är att besökaren ska klicka på samtliga reklamlänkar och som belöning få en gratis Spotify invite. Vill alltså på ett så enkelt sätt som möjligt få till det så att en ny sida öppnas i samma fönster eller en länk till sidan med Spotify invites kommer upp först efter att besökaren klickat på alla reklamlänkar.

Någon som kan visa hur man gör, sitter med frontpage 2003, söker en så enkel lösning som möjligt.

Tack på förhand!

Medlem sedan feb. 20005 891 inlägg
#2

Väldigt enkelt exempel i JavaScript som manipulerar DOM, säkert ingen optimal lösning men hey, det funkar: ;)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Visa text efter klickade länkar</title>
<script type="text/javascript">

	// Använd en array för att hålla värden, storleken i detta fall 5:
	var size = 5;
	var links = [size];

	// Redigera inte dessa variabler:
	var index = 0;
	var i;
	
	function hide() {
	
		// Göm textområdet by default:
		document.getElementById("newtext").style.visibility = "hidden";
	}

	function add(index) {
	
		// Kontrollera vilket värde som skickats till funktionen:		
		if( links[index] != 1 )
		{
			links[index] = 1;
		}

		var show = 1;

		// Gör en kontroll efter varje funktionsanrop, ifall alla länkar skulle vara klickade:
		for( i = 0; i < size; i++ )
		{
			if( links[i] != 1 )
			{
				show = 0;
			}
		}
		
		if( show == 1 )
		{
			document.getElementById("newtext").style.visibility = "visible";
		}
	}

</script>
</head>

<body onload="hide()">
<a href="#" target="_blank" onClick="add(0)">Länk 1</a>
<a href="#" target="_blank" onClick="add(1)">Länk 2</a>
<a href="#" target="_blank" onClick="add(2)">Länk 3</a>
<a href="#" target="_blank" onClick="add(3)">Länk 4</a>
<a href="#" target="_blank" onClick="add(4)">Länk 5</a>
<div id="newtext">Grattis! Du har klickat på alla länkar!</div>
</body>
</html>

Jag har gjort den så enkel som möjligt för att principen bakom ska vara tydlig. Ev. länk eller text slänger du in i wrappern newtext, och vill du lägga till flera värden så är det bara att ändra variabeln size till något annat än 5.

Och så lägger du till länkar och ändrar värdet som skickas till funktionen med "plus ett".

254 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)