href und return im Link
bjnas
- javascript
Hallo Fachleute
Mein Problem :
Möchte eine Homepage realisieren die mit Links wie
<a href="Link.." onclick="return change('s1');">Startseite</a>
aufgebaut sind. Mit Change wird ein HTML Request ausgelöst und bei Erfolg False zurückgegeben, also der href sollte nicht ausgelöst werden. Wenn nicht wird die Seite über PHP geladen.
Jetzt versuchte ich mehrere Varianten.
href="#id=s1"
funktioniert
href="index.php?id=s1"
href wird ausgelöst
href="http://www.beispiel.was"
href wird ausgelöst
Wieso befolgen einige href's den return vom Javascript und einige nicht ? Und wo finde ich die korrekten Regeln für dieses Verhalten.
Danke für Hilfe
Bruno
Vielleicht wäre die change-Funktion eine sinnvolle Lektüre für jene Leser gewesen, die versuchen wollen, Dir zu helfen. Wenn innerhalb des onclick-Events "return false;" steht wird der Link üblicherweise nicht angesprungen - es sei denn, im davorstehenden JS-Code ist ein Fehler.
Ich würde Dir mangels Code empfehlen, mal die Fehlerkonsole zu öffnen und nachzusehen, ob Dir irgendwo ein Fehler einen Strich durch die Rechnung macht.
Gruß, LX
Hei
Danke für Deine Antwort, Konsole zeigt keine Fehler. Versuchte den return abzufangen mit alert(change('s1'));
. Erhalte ein "undefined".
Wenn der Code Fehler hat, wieso funktioniert er dann mit href"#" ? So wird der Link nicht ausgelöst nur der Request.
??
Gruss Bruno
Bei "#" wird die Seite generell nicht neu geladen. Deine Funktion hat also keinen Fehler, sondern gibt immer nur "undefined" zurück.
Wenn Du Hilfe bei der Fehlersuche benötigst, würde ich Dir noch einmal empfehlen, den Code der Funktion hier zu posten.
Gruß, LX
Bei "#" wird die Seite generell nicht neu geladen. Deine Funktion hat also keinen Fehler, sondern gibt immer nur "undefined" zurück.
Wenn Du Hilfe bei der Fehlersuche benötigst, würde ich Dir noch einmal empfehlen, den Code der Funktion hier zu posten.
Gruß, LX
Hier die Funktion
function change(hs){
var xmlHttp = null;
// Mozilla, Opera, Safari sowie Internet Explorer 7
if (typeof XMLHttpRequest != 'undefined') {
xmlHttp = new XMLHttpRequest();
}
if (!xmlHttp) {
// Fehlerbehandlung für IE5+6
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP"); //IE5
} catch(e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE6
} catch(e) { }
}
}
// Wenn das Objekt erfolgreich erzeugt wurde
if (!xmlHttp) {
//alert("Kann keine XMLHTTP-Instanz erzeugen");
return 'true';
}else{
var url = "change.php";
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlHttp.onreadystatechange = function () {
//alert (xmlHttp.readyState);
if (xmlHttp.readyState == 4 && xmlHttp.status == 200 ) {
if (document.getElementById('txt')) {
document.getElementById('txt').innerHTML = xmlHttp.responseText;
return false;
}else{
return true;
}
}
};
xmlHttp.send('hs='+hs);
}
}
Danke für die Mühe
Bruno
Jetzt hab ich den Fehler.
An's Ende der Funktion ein return false und schon funktionierts.
Weiss jetzt nicht warum die Funktion nicht verlassen wird nah document.getElementById('txt').innerHTML = xmlHttp.responseText;
.
Aber jetzt geht es.
Bruno
Hallo,
ich vermute, dass du nicht "false" zurückgibst. einen nicht-vorhandenen anker anzuspringen "#..." "funktioniert" "natürlich".
vielleicht hilft ja: onclick="alert(return deinefunktion())";
Gruß
jobo