onClick im Link-Tag

caliph

Grünschnabel
Hallo Leute,

ich habe folgenden Link:

<a href="test.html" onClick="swap('begriff');return false">Link</a>

Beim Anklicken soll das Script ausgeführt werden, aber nicht der Link aufgerufen werden (ausser natürlich bei ausgeschaltetem Javascript).

Bei mir wird immer da Script ausgeführt UND der Link aufgerufen.
Was mache ich falsch?

Würde mich über Hilfe freuen!!

Gruß,
Stefan
 
Ich vermute, du hast einen Fehler in der Funktion swap()
Dieser tritt vermutlich erst am Ende der Funktion auf...also nachdem die Aktionen, welche die Funktion ausführen sollte, erfolgreich ausgeführt wurden.
Der Effekt dieses Fehlers wäre jedoch, dass die Anweisung "return false" wirkungslos bleibt und somit der Link verfolgt wird.

Poste doch mal bitte die Funktion und das Drumherum.
 
Danke für Deine Unterstützung.

PHP:
function swap(targetID) { 
				for (var i=1; i<=10; i++) 
					{
					obj = document.getElementById(targetID+i); 
					obj.style.display = (obj.style.display == 'none') ? 'block' : 'none'; 
					}
				}

Es werden bis zu 10 DIV Elemente aus bzw eingeblendet.
Zur Zeit sind es aktuell 3 Elemente.
 
ok, habs gemerkt. wenn ich die zahl 10 in der funktion auf eine zahl < der tatsächlichen anzhal der elemente wähle funktioniert es reibungslos.

das dumme ist, mit php nummeriere ich die div-elemente im html durch.
in dem aufruf der swap-funktion kenne ich aber noch nich tdie genaue anzahl.

ich müsste die funktion also umschreiben, sodass sie erst prüft, ob das element existiert, und dann style.display verändert.

wie macht man das wohl in javascript?
 
In JS kannst du per try-catch eine Fehlerbehandlung implementieren.
dabei wird das Eine (try) versucht. schlägt es fehl, wird das andere (catch) ausgeführt.
Etwaige fehler werden somit also abgefangen:
Code:
function swap(targetID) 
{
    for (var i=1; i<=10; i++)
        {
            try
                {
                    obj = document.getElementById(targetID+i);
                    obj.style.display = (obj.style.display == 'none') ? 'block' : 'none';
                }
            catch(e)
                {
                    continue;
                }
        }
}


Übrigens: Verwende bitte ein korrekte Gross/Kleinschreibung(Details kannst du in der Netiquette nachlesen).
Danke
 
Danke für Deine Hilfe!

Ich habe es nun in finaler Version als While -Scheife umgesetzt:

Code:
var i=1;
while (document.getElementById(targetID+i))
	{
	obj = document.getElementById(targetID+i); 
	obj.style.display = (obj.style.display == 'none') ? 'block' : 'none'; 
	i++;
	}


Die Fehlerbehandlung habe ich an anderer Stelle perfekt einbauen können
 

Neue Beiträge

Zurück