![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Felix, 31. 08. 2005, 12:32
um mich ein wenig einzuarbeiten, hab ich mal einen simplen leet-translator gebastelt. das sieht dann aus wie folgt:
<script type="text/javascript">
function remember() {
norm = document.Eingabe.Feld.value;
document.Eingabe.Feld1.value = norm;
}
function translator(neu,seek,destroy) {
if (neu.length > 0) {
var leet = neu.toLowerCase();
while(leet.indexOf(seek)>-1) {
ort= leet.indexOf(seek);
leet = (leet.substring(0, ort) + destroy
+ leet.substring((ort + seek.length), leet.length));
}
document.Eingabe.Feld.value=leet;
}
else{
alert ("Bitte geben Sie einen zu übersetzenden Text ein!");
}
}
function ausgabe() {
aleet = document.Eingabe.Feld.value;
anorm = document.Eingabe.Feld1.value;
document.Eingabe.Feld.value = anorm;
document.Eingabe.Feld1.value = aleet;
}
</script>
<div align="center">
<form name="Eingabe">
<textarea rows=5 cols=40 name="Feld">Geben Sie doch etwas ein...</textarea>
<br><br>
<input type="button" value="OK" onClick="remember();
translator(document.Eingabe.Feld.value,'you','j00');
translator(document.Eingabe.Feld.value,'cker','xor');
translator(document.Eingabe.Feld.value,'cks','x');
translator(document.Eingabe.Feld.value,'a','4');
translator(document.Eingabe.Feld.value,'e','3');
translator(document.Eingabe.Feld.value,'i','!');
translator(document.Eingabe.Feld.value,'l','1');
translator(document.Eingabe.Feld.value,'o','0');
translator(document.Eingabe.Feld.value,'s','$');
translator(document.Eingabe.Feld.value,'t','7');
ausgabe()">
<br><br>
<textarea rows=5 cols=40 name="Feld1"></textarea>
</form>
</div>
das problem dazu liegt in diesem Stück:
else{
alert ("Bitte geben Sie einen zu übersetzenden Text ein!");
}
wie man sieht wird die funktion mehrmals hintereinander aufgerufen, und damit auch der alert. der alert sollte aber nur einmal kommen.
hat irgendjemand einen vorschlag wie ich das bewerkstelligen könnte?
Die folgende Nachricht zum Thema stammt von: Thomas J.S., 31. 08. 2005, 12:44
Hallo,
»» wie man sieht wird die funktion mehrmals hintereinander aufgerufen, und damit auch der alert. der alert sollte aber nur einmal kommen.
»» hat irgendjemand einen vorschlag wie ich das bewerkstelligen könnte?
Versuche es mit einer boolschen Abfrage, so in etwa:
»» <script type="text/javascript">
var bAlert = true;
»» function remember() {
...
else{
if(bAlert) {
alert ("Bitte geben Sie einen zu übersetzenden Text ein!");
bAlert = false;
}
Grüße
Thomas
Die folgende Nachricht zum Thema stammt von: Felix, 31. 08. 2005, 13:03
Vielen Dank, hast sehr geholfen...
habe aber noch eine bessere methode gefunden (dank dir):
<script type="text/javascript">
function leer() {
text=document.Eingabe.Feld.value;
if (text.length <= 0) {
alert ("Bitte geben Sie einen zu übersetzenden Text ein!");
}
}
function remember() {
...
</script>
<div align="center">
<form name="Eingabe">
<textarea rows=5 cols=40 name="Feld">Geben Sie doch etwas ein...</textarea>
<br><br>
<input type="button" value="OK" onClick="remember();
translator(document.Eingabe.Feld.value,'you','j00');
translator(document.Eingabe.Feld.value,'cker','xor');
translator(document.Eingabe.Feld.value,'cks','x');
translator(document.Eingabe.Feld.value,'a','4');
translator(document.Eingabe.Feld.value,'e','3');
translator(document.Eingabe.Feld.value,'i','!');
translator(document.Eingabe.Feld.value,'l','1');
translator(document.Eingabe.Feld.value,'o','0');
translator(document.Eingabe.Feld.value,'s','$');
translator(document.Eingabe.Feld.value,'t','7');
leer();
ausgabe()">
<br><br>
<textarea rows=5 cols=40 name="Feld1"></textarea>
</form>
Gruß, Felix
Die folgende Nachricht zum Thema stammt von: Verwundert, 31. 08. 2005, 15:13
»» text=document.Eingabe.Feld.value;
»» if (text.length <= 0) {
Könntest Du mir ein Beispiel geben, für den Fall text.length<0 ?
Was würde mir das ein alert(text); ausgeben?
Gruß
Die folgende Nachricht zum Thema stammt von: Der Martin, 31. 08. 2005, 15:34
Hallo,
»» »» text=document.Eingabe.Feld.value;
»» »» if (text.length <= 0) {
»»
»» Könntest Du mir ein Beispiel geben, für den Fall text.length<0 ?
»» Was würde mir das ein alert(text); ausgeben?
ähm, ja... ein String mit einer Länge kleiner Null würde mich auch mal interessieren. Also im Klartext: Die Abfrage ist unsinnig formuliert. Eine Abfrage auf ==0 hätte selbstverständlich gereicht.
So long,
Martin
Die folgende Nachricht zum Thema stammt von: Struppi, 31. 08. 2005, 16:02
»» ähm, ja... ein String mit einer Länge kleiner Null würde mich auch mal interessieren. Also im Klartext: Die Abfrage ist unsinnig formuliert. Eine Abfrage auf ==0 hätte selbstverständlich gereicht.
und in 99% der Fälle auch einfach if(!text)...
Struppi.
--
Javascript ist toll
© 1998-2006
Impressum, Software: Classic Forum