aus zwei mach eins
Bayernfreund
- javascript
Hallo
Ich habe hier ein Skript bei dem nach Überprüfung der sichtbare Teil versteckt wird, und ein unsichtbarer Teil sichtbar wird.
Das Ganze funktioniert hervorragend. Bei einer Fehlermeldung erscheint dann ein Alert. Und das gefällt mir nicht.
Es soll aber so aussehen, wie das in dem anderen Skript (siehe unten).
Ich habe schon alles probiert, aber ich schaffe es einfach nicht aus zwei Skripte eins zu machen. Kann mir jemand dabei helfen?
Vielen Dank im Voraus
<script language="JavaScript">
function checkenIt(t) {
if (!pruef()) return;
v = t.id;
if(v == '') {
document.getElementById('Bannerfeld').style.display = 'inline';
document.getElementById('Ablage').style.display = 'none';
} else if(v == 'super') {
document.getElementById('Bannerfeld').style.display = 'none';
document.getElementById('Ablage').style.display = 'inline';
} else {
document.getElementById('Bannerfeld').style.display = 'inline';
document.getElementById('Ablage').style.display = 'none';
}
function pruef(){
var falsch = ""; // Variable in der die Fehler gespeichert werden
if(document.mail.Namen.value == "") falsch += "Gib bitte deinen Namen an! \n"
if(falsch == "") return true
else{
alert("" + falsch)
return false
}
}
}
</script>
<form name="mail">
<a id="Bannerfeld"><input type="text" id="Namen" style="width:200px"><input type="button" value="weiter" id="super" onClick="checkenIt(this);">
</a>
<a id="Ablage" style="display:none;">
<input type=button id="zuruck" onclick="checkenIt(this); document.getElementById('Namen').value = '';" value="bravo" style="font-weight:bold; font-size:30px; width:100px; height:45px;">
</a>
</form>
Hier ist das andere Skript
<SCRIPT LANGUAGE="JavaScript">
function validate_form() {
validity = true;
if (!check_empty(document.form.Name.value)){ /* Funktion Namen (Abfrage) */
validity = false;
show('Layer1'); /* zeige Fehler */
}
if (validity);
return validity; /* alle Angaben waren korrekt */
}
function check_empty(text) {
return (text.length > 0); /* gibt false zurück wenn leer */
}
if (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) >=3))
|| ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion.substring(0,1)) >=4)))
{var version=true}
if (document.layers){ /* Browserabfrage: Layer-Object bekannt? */
ns = 1; ie = 0;
}else{
ns = 0; ie = 1;
}
function show(name) {if (ns){ /* Funktion Schicht anzeigen */
document.layers['' + name].visibility = "show";
}else{
document.all['' + name].style.visibility = "visible";
}
}
function hide(name) { /* Funktion Schicht verstecken */
if (ns){
document.layers['' + name].visibility = "hide";
}else{
document.all['' + name].style.visibility = "hidden";
}
}
</SCRIPT>
<form name="form" method="post" action="mailto:xxxx@t-online.de?SUBJECT=Betreff für die Mail" enctype="text/plain" onSubmit="return validate_form(this.form)">
<table>
<tr>
<td width="310">
<input type="text" name="Name" style="width:300px;">
</td>
<td width="400">
<div id="Layer1" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:11pt;"><b>Bitte überprüfe noch einmal deine Eingaben!</b></span></font></div>
</td>
</tr>
<tr>
<td height="60" colspan="2">
<input type="submit" border="0" onclick="hide('Layer1');" name="submit" value="weiter" style="font-size:large;">
</td>
</tr>
</table>
</form>
Lieber Bayernfreund,
von mir bekommst Du keine fertige Lösung, denn das ist nicht das, was "SELF" bei SELFHTML bedeutet.
Du hast Dir da zwei sehr antike Scripte herausgesucht, die sich offensichtlich gegenseitig stören, da sie viele der damals üblichen Unarten enthalten. Wie man es besser macht könntest Du lernen... wenn Du das willst.
Liebe Grüße,
Felix Riesterer.
Hi,
if (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) >=3))
|| ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion.substring(0,1)) >=4)))
Da war aber jemand nicht sehr vorausschauend.
Bei Version 10 sollte navigator.appVersion.substring(0,1) die 1 sein. Und die ist kleiner als 4 (bzw. 3) ...
Sehr intelligent, die 1. Ziffer zu prüfen (wenn man überhaupt auf Versionsnummern prüft ...)
cu,
Andreas
[latex]Mae govannen![/latex]
if (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) >=3))
|| ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion.substring(0,1)) >=4)))Da war aber jemand nicht sehr vorausschauend.
Bei Version 10 sollte navigator.appVersion.substring(0,1) die 1 sein. Und die ist kleiner als 4 (bzw. 3) ...
Sehr intelligent, die 1. Ziffer zu prüfen (wenn man überhaupt auf Versionsnummern prüft ...)
Jepp, wegen solcher „Deppenprogrammierung“ ist Opera schon seit Version 10.x dauerhaft auf Opera 9.80 festgelegt :(
Stur lächeln und winken, Männer!
Kai
@@MudGuard:
nuqneH
if (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) >=3))
|| ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion.substring(0,1)) >=4)))Sehr intelligent, die 1. Ziffer zu prüfen (wenn man überhaupt auf Versionsnummern prüft ...)
*prust*
Ich würde die Versionsnummer von IEs auch eher mit document.documentMode
und conditional compilation für IE 7 abfragen: http://forum.de.selfhtml.org/archiv/2012/1/t208553/#m1418871 f.
Und Netscape nicht.
Qapla'
@@Bayernfreund:
nuqneH
Ich habe hier ein Skript bei dem nach Überprüfung der sichtbare Teil versteckt wird, und ein unsichtbarer Teil sichtbar wird.
Ohne mir das genau angesehen zu haben vermute ich doch stark, dass das auch ohne JavaScript geht. HTML5 und CSS3 und gut ist.
<script language="JavaScript">
@language="JavaScript" war noch nie sinnvoll. Weg damit! In HTML 4/XHTML 1 war @type="text/javascript" erforderlich; in HTML5 ist es das nicht mehr.
document.getElementById('Bannerfeld').style.display = 'inline';
document.getElementById('Ablage').style.display = 'none';
Es ist NIE eine gute Idee, den Wert von style-Eigenschaften direkt mit JavaScipt zu setzen.
Klasse des Elements bzw. eines Vorfahrenelements ändern; den Rest erledigt das Stylesheet.
<a id="Bannerfeld"><input type="text" id="Namen" style="width:200px"><input type="button" value="weiter" id="super" onClick="checkenIt(this);">
Es ist auch keine gute Idee, Stilangaben inline in @style0Attributen zu notieren. Sämtliche Darstellungsangaben gehören ins Stylesheet.
Die Trennung von Struktur, Präsentation und Verhalten kommt der Wartbarkeit zugute.
<SCRIPT LANGUAGE="JavaScript">
Auch wenn HTML nicht case-sensitiv ist: schreibe Element- und Attributbezeichner konsequent klein! Zu @language siehe oben.
if (((navigator.appName == "Netscape") && (parseInt(navigator.appVersion.substring(0,1)) >=3))
|| ((navigator.appName == "Microsoft Internet Explorer") && (parseInt(navigator.appVersion.substring(0,1)) >=4)))
Netscape ist seit Urzeiten irrelevant. Zur Abfrage der IE-Version siehe mein anderes Posting.
Überhaupt ist es selten sinnvoll, Browserversionen abzufragen. Besser: Feature-Unterstützung abfragen.
function show(name) {if (ns){ /* Funktion Schicht anzeigen */
document.layers['' + name].visibility = "show";
}else{
document.all['' + name].style.visibility = "visible";
}
}
function hide(name) { /* Funktion Schicht verstecken */
if (ns){
document.layers['' + name].visibility = "hide";
}else{
document.all['' + name].style.visibility = "hidden";
}
Da Netscape sowieso irrelevanat ist, kannst du dir diese Browserabfrage sparen. Zum Ändern von style-Eigenschaften mit JavaScript siehe oben.
<div id="Layer1" style="visibility:hidden;"><font color="red" face="Arial"><span style="font-size:11pt;"><b>Bitte überprüfe noch einmal deine Eingaben!</b></span></font></div>
Vergiss, dass es jemals ein font-Elemet in HTML gab! Gibt Schriftart, -farbe, -größe mit CSS im Stylesheet an!
Es gibt auch keinen Grund, Umlaute zu verstümmeln. Verwende ü im Quelltext!
Qapla'
Lieber Gunnar Bittersmann,
Es ist NIE eine gute Idee, den Wert von style-Eigenschaften direkt mit JavaScipt zu setzen.
Du bist mir bisher immer eine Antwort schuldig geblieben, wenn ich dieses Argument im Zusammenhang mit Animationen in seiner Absolutheit in Frage gestellt habe. Mittlerweile gibt es zwar "transitions", aber noch immer bleiben viele mögliche Fälle damit unversorgt, sodass man sich seine Animationen doch wieder selbst basteln muss. Und genau dann brauchst Du eben doch ein direktes Verändern der spezifischen style-Eigenschaften!
Liebe Grüße,
Felix Riesterer.
@@Felix Riesterer:
nuqneH
Es ist NIE eine gute Idee, den Wert von style-Eigenschaften direkt mit JavaScipt zu setzen.
Du bist mir bisher immer eine Antwort schuldig geblieben, wenn ich dieses Argument im Zusammenhang mit Animationen in seiner Absolutheit in Frage gestellt habe.
Nun ja, dem „NIE“ ist IMMER ein „[tm]“ inhärent. ;-)
„[tm]“ ist die Abkürzung für „es sei denn, man weiß genau, was man tut“. (Mit Betonung auf „weiß“, nicht „glaubt zu wissen“.)
Mittlerweile gibt es zwar "transitions", aber noch immer bleiben viele mögliche Fälle damit unversorgt
Die da wären?
Transition von height: auto nach height: 0?
sodass man sich seine Animationen doch wieder selbst basteln muss.
Nö.
Und genau dann brauchst Du eben doch ein direktes Verändern der spezifischen style-Eigenschaften!
Ja, dann könnte man die berechnete Höhe auslesen und dem Element per style.height zuweisen. (Und das nach jedem Re-Rendering.)
Die eigentliche Transition von height: 42px mach height: 0 überlässt man immer noch CSS.
Qapla'
Hallo Allerseits
Erst mal vielen Dank für eure Antworten. Ich muß dazu sagen, daß ich genau so wie viele Andere absoluter Leihe bin. Ich möchte mir nur eine Website erstellen und einige Ideen mit einbringen.
Wenn ich im Internet nach Skripten suche, werden in der Regel nur Seiten mit Skripten angezeigt die meistens schon uralt (10 Jahre und älter) sind. Wenn ich über Google auf
selfhtml.org gelange, habe ich schon großes Glück gehabt. Diese Seite stammt dann aus dem Forum. Wenn ich bei selfhtml.org ein Skript suche, weiß ich natürlich nicht was ich zur Suche eingeben muß.
Deshalb schlage ich vor, daß ihr eine Unterseite einrichtet, wo alle wichtigen Skripte, die ihr im Forum beschrieben habt, gespeichert werden.
Ich glaube, daß dann viel weniger Anfragen über das Forum zu bearbeiten sind.
Om nah hoo pez nyeetz, Bayernfreund!
Vielen Dank für deine Anregung. Allerdings muss ich dazu sagen, dass wohl keiner eine Übersicht hat, welche Skripte im Forum Gegenstand einer Diskussion waren.
Eine Anlaufstelle ist das Wiki auch für solche Vorschläge. Dort gibt es den Bereich JavaScript. Vielleicht wirst du ja dort schon fündig.
Viele Probleme, die früher einmal JavaScript erforderten, sind heute mit Mitteln von HTML und CSS lösbar. Das sollte auch für deine Problematik zutreffen. Dazu könntest du deine Seite online zeigen, (möglicherweise bekommst du dann auch Hinweise, die garnichts mit deinem Problem zu tun haben, aber trotzdem hilfreich und für dich frustrierend sind) beschreiben, _was_ du möchtest _ohne_ auf Lösungsversuche einzugehen.
PS: Enige Antworten sind für dich leider wenig zielführend. Versuche, die Kritik an dir abprallen zu lassen. Es ist nicht unbedingt Kritik an deiner Person. Kopf hoch!
Matthias