Link dynamisch ersetzen oder deaktivieren

bandsite

Mitglied
Hallo,

Ich möchte Links auf meiner Seite dynamisch verändern.
Nachdem ein User auf einen Link geklickt hat, soll dieser Link für eine gewisse Zeit ausser kraft gesetzt werden, könnt ihr mir einen Tip geben wie ich das am besten anstelle?

Güße, bandsite

//edit:

Ich habe so versucht:

Code:
	function deactivate(name)
	{
		that = document.getElementById(name);	
		save = that.href;
		off  = window.setTimeout("that.href = '#'", 1000);
	}
	
	function activate(name)
	{
		that = document.getElementById(name);
		clearTimeout(off);
		that.href = save;
	}

Die Funktion deactivate(name) rufe ich per oncklick direkt auf dem Link auf, dadurch wird der href in die Variable save gespeichert und nach einer sekunde im Quellcode durch # ersetzt.... die Funktion activate(name) liegt auf einem anderen Link...., der Ursprüngliche href wird wieder zurückgeschrieben.

Das funktioniert auch, aber nur wenn man in der zwischenzeit nicht auf den "deaktivierten" Link klickt..... denn dann funktioniert activate(name) nicht mehr....

Kann mir bitte jemand auf die Sprünge helfen?

Danke =)

//edit die zweite:

Habe eine Lösung gefunden, hier : http://www.drweb.de/javascript/javascript_links_ausschalten.shtml

//edit: Also, die Funktionen von Dr.Web haben mir schon echt weitergeholfen, da ich aber nur einige (und nicht alle) Links deaktivieren möchte habe ich ein eigenes neues Script geschrieben.:

Code:
	function handleLinks(way)
	{
		if(way == 'disable')
		{
			disa = document.links.disa;
			disb = document.links.disb;
			disc = document.links.disc;
			disd = document.links.disd;
	
			disaSave = disa.href;
			disbSave = disb.href;
			discSave = disc.href;
			disdSave = disd.href;
	
			disa.href = 'javascript:void(0)';
			disb.href = 'javascript:void(0)';
			disc.href = 'javascript:void(0)';
			disd.href = 'javascript:void(0)';
	
			disa.style.backgroundImage = 'url(images/arrow_red.gif)';
			disb.style.backgroundImage = 'url(images/arrow_red.gif)';
			disc.style.backgroundImage = 'url(images/arrow_red.gif)';
			disd.style.backgroundImage = 'url(images/arrow_red.gif)';
		}
		else if(way == 'enable')
		{
			disa.href = disaSave;
			disb.href = disbSave;
			disc.href = discSave;
			disd.href = disdSave;
	
			disa.style.backgroundImage = 'url(images/arrow_blue.gif)';
			disb.style.backgroundImage = 'url(images/arrow_blue.gif)';
			disc.style.backgroundImage = 'url(images/arrow_blue.gif)';
			disd.style.backgroundImage = 'url(images/arrow_blue.gif)';	
		}
	}

Jetzt habe ich das Problem, dass es im Firefox, Netscape und Operaproblemlos funktioniert nur der IE mal wieder jammern muss.

Ich klicke auf den Link zum deaktivieren:
Code:
<a href="javascript: handleLinks('disable');">xx</a>
und der IE deaktiviert die Links.

Ich klicke auf den aktivieren Link
Code:
<a href="javascript: handleLinks('enable');">xx</a>
und er errinert sich nicht an die disxSave variablen und schreibt "undefined" in den href der Links.

Was vieleicht noch wichtig ist, bei keinem Linkklick wird die Seite neu vom Server geladen... deswegen wundert es mich das die Variablen für den IE verloren gehen.

Weis jemand Rat?
 
Zuletzt bearbeitet:
Hi,

versuch die Links mal über IDs und die Methode getElementByID anzusprechen. Das sollte in
den aktuellen Browsern problemlos funktionieren.

Folgendes Script realisiert das Vorgehen. Es müssen nur noch die IDs der Links in den Array eingetragen
werden, die aktiviert bzw. deaktiviert werden sollen.
HTML:
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<title>www.tutorials.de</title>
<meta name="author" content="Quaese" />
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
  <!--
  // IDs der Links eintragen, die aktiviert bzw. deaktiviert werden sollen
  var arrLinks = new Array("disa", "disb", "disc", "disd");
  var arrSaveHref = new Array();

  function handleLinks(way){
    // Falls die Links deaktiviert werden sollen
    if(way == 'disable'){
      // Alle Links durchlaufen, die disabled werden sollen
      for(var i=0; i<arrLinks.length; i++){
        // URL in Speicherarray schreiben
        arrSaveHref[arrLinks[i]] = document.getElementById(arrLinks[i]).href;
        document.getElementById(arrLinks[i]).href = 'javascript: void(0)';
        document.getElementById(arrLinks[i]).style.backgroundImage = 'url(images/arrow_red.gif)';
      }
    // Falls die Links aktiviert werden sollen
    }else if(way == 'enable'){
      // Alle Links durchlaufen, die enabled werden sollen
      for(var i=0; i<arrLinks.length; i++){
        // URL aus Speicherarray holen
        document.getElementById(arrLinks[i]).href = arrSaveHref[arrLinks[i]];
        document.getElementById(arrLinks[i]).style.backgroundImage = 'url(images/arrow_blue.gif)';
      }
    }
  }

  // Funktion zum Initalisieren des Speicherarrays für URLs
  function initLinks(){
    for(var i=0; i<arrLinks.length; i++){
      // Linkobjekt in Speicherarray
      arrSaveHref[arrLinks[i]] = document.getElementById(arrLinks[i]).href;
    }
  }

  window.onload = initLinks;
 //-->
</script>
<style type="text/css">
  <!--
 //-->
</style>
</head>
<body>
<p>
  <a href="javascript: handleLinks('disable');">disable</a>
  <a href="javascript: handleLinks('enable');">enable</a>
</p>
<p>
  <a href="http://www.tutorials.de" name="disa" id="disa">www.tutorials.de</a><br />
  <a href="http://www.google.de" name="disb" id="disb">www.google.de</a><br />
  <a href="http://www.spiegel.de" name="disc" id="disc">www.spiegel.de</a><br />
  <a href="http://www.sueddeutsche.de" name="disd" id="disd">www.sueddeutsche.de</a>
</p>
</body>
</html>
Vielleicht hilft Dir das weiter.

Ciao
Quaese
 
Super!,
Danke für deine Hilfe! =)

//edit:

Ich habe das Script noch etwas umgeschrieben, nun kann man der Funktion die ID's der zu deaktivierenden Links mitgeben. Ausserdem kann die Funktion jetzt mehrere "ausführungsinstanzen" (nenn ich das jetzt mal =) ) verwalten.

Code:
//	LINKS DEAKTIVIEREN
	linkList = new Array();
	saveHref = new Array();
	
	function handleLinks(way, id)
	{
		if(saveHref[id])
		{
		}
		else
		{
			linkList[id] = new Array();
			saveHref[id] = new Array();
			
		}
		if(handleLinks.arguments[0] == 'disable')
		{			
			linkList[id] = handleLinks.arguments;
			
			for(var i=2; i < linkList[id].length; i++)
			{
				thisLink	= linkList[id][i];
				saveHref[id][i] = document.getElementById(thisLink).href;
				document.getElementById(thisLink).href					= 'javascript: void(0)';
				document.getElementById(thisLink).style.backgroundImage	= 'url(images/arrow_red.gif)';
				document.getElementById(thisLink).style.cursor			= 'wait';
			}
		}
		else
		if(handleLinks.arguments[0] == 'enable')
		{
			for(var i=2; i < linkList[id].length; i++)
			{
				thisLink	= linkList[id][i];
				document.getElementById(thisLink).href					= saveHref[id][i];
				document.getElementById(thisLink).style.backgroundImage	= 'url(images/arrow_blue.gif)';
				document.getElementById(thisLink).style.cursor			= 'pointer';
			}
		}
	}

Syntax:

Deaktivieren von Links:
handleLinks('disable', 'bezeichner', 'link1', 'link2', 'link3')

Aktivieren von Links:
handleLinks('enable', 'bezeichner')

Grüße, bandsite
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück