![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: gary, 30. 09. 2007, 10:53
Hi zusammen,
Ich habe hier ein kleines Paradoxon. Zwei identische Befehle, der obere streikt und der untere geht. Das verstehe wer wolle- ich nicht.
Zum Beispiel:
function chkFormular () {
for (i = 0; i < document.Box00.D00.length; ++i)
if (document.Box00.D00.options[i].selected == true)
document.Formular.Vambox.value = (document.Box00.D00.options[i].value);
document.Formular.Pos00.value = vorkomma00 + "," + nachkomma00 + " Euro";
for (i = 0; i < document.Box01.D01.length; ++i)
if (document.Box01.D01.options[i].selected == true)
document.Formular.Forest.value = (document.Box01.D01.options[i].value);
document.Formular.Pos01.value = "vorkomma01 + "," + nachkomma01 + " Euro";
diese Routinen weisen einer hidden- Anweisung die dahinter stehenden Werte zu. Bei 11 von insgesammt 13 Routinen funktioniert es. Komischer weise ist es genau die Erste und die Letzte Anweisung, die weiter unten im Programm nichts verschickt.
Als Test habe ich an stelle des Variabelausdrucks "vorkomma00 + "," + nachkomma00 + " Euro";" den Text -"geht das ?"- eingesetzt.
Ergebnis: oben bei "Pos00" wird nichts verschickt unten klappt es tadellos.
Hilfe...
Gruss gary
Die folgende Nachricht zum Thema stammt von: ratio, 30. 09. 2007, 11:03
»» diese Routinen weisen einer hidden- Anweisung die dahinter stehenden Werte zu. Bei 11 von insgesammt 13 Routinen funktioniert es.
du verwendest 13 (fast) identische Routinen? Wenn du sie in eine Funktion auslagerst und einfach 13mal mit verschiedenen Argumenten aufrufst sollte nicht nur dein Problem gelöst sein, sondern solltest du auch eine Menge Codezeilen gespart haben.
Übrigens: gibt es irgendwelche Fehlermeldungen in der FireFox-JavaScript-Konsole?
Die folgende Nachricht zum Thema stammt von: gary, 30. 09. 2007, 11:11
»» du verwendest 13 (fast) identische Routinen? Wenn du sie in eine Funktion auslagerst und einfach 13mal mit verschiedenen Argumenten aufrufst sollte nicht nur dein Problem gelöst sein, sondern solltest du auch eine Menge Codezeilen gespart haben.
Um 13 Routinen in einer zu Programmieren reicht mein bescheidenes Javascriptwissen nicht aus. Codezeilen brauche ich nicht sparen, hab genug davon ;-)
»» Übrigens: gibt es irgendwelche Fehlermeldungen in der FireFox-JavaScript-Konsole?
Ja das mit der fehlerkonsole wollte ich schon immer mal fragen:
Oft ist die rede von Fehlerkonsolen, Tracingprogramme ,die anscheinend fehler finden. Was ist das und wo ist das im Firefox?
Grüsse gary
Die folgende Nachricht zum Thema stammt von: ratio, 30. 09. 2007, 11:18
»» Codezeilen brauche ich nicht sparen, hab genug davon ;-)
genau das ist dein Problem
»» Ja das mit der fehlerkonsole wollte ich schon immer mal fragen:
»»
»» Oft ist die rede von Fehlerkonsolen, Tracingprogramme ,die anscheinend fehler finden. Was ist das und wo ist das im Firefox?
Menü Extras/JavaScript-Konsole
Die folgende Nachricht zum Thema stammt von: gary, 30. 09. 2007, 15:12
Hi ratio,
Mercifürdie info bezüglich Fehlerkonsole.
»» genau das ist dein Problem
Heisst dass, dass Programmzeilen in html/javascript begrenzt sind,und zu viele davon Fehler auslösen. Ich dachte das es keine Begrenzung (ausser Speicher) gibt.
gruss gary
Die folgende Nachricht zum Thema stammt von: donp, 30. 09. 2007, 15:42
Hi gary,
»» Heisst dass, dass Programmzeilen in html/javascript begrenzt sind,und zu viele davon Fehler auslösen.
Nein das heisst, dass zu viele davon unübersichtlich (d.h. fehleranfällig), verschwenderisch (Datenübertragung, Speicher), uneffektiv (=langsam) – kurz und gut: schlechter Programmierstil und einfach Sch... sind.
Niemand hat Lust, sich mit solchem Spaghetti-Code herumzuschlagen.
Es gibt allerdings spezielle Clubs und Wettbewerbe, wo man sich zum Ziel gemacht hat, Progamme im Quellcode möglichst so zu schreiben, dass ihnen niemand ansieht, was sie eigentlich machen (Stichwort Obfuscation). Meistens machen sie auch nicht viel (nur ein paar Wörter ausgeben oder so) und natürlich ist das keine ernsthafte Sache, nur ein Sport zur Belustigung für Programmier-Workoholics.
Gruß, Don P
Die folgende Nachricht zum Thema stammt von: gary, 30. 09. 2007, 16:32
»» Hi Don P
Hab den Fehler endlich gefunden:
document.Formular.Pos12.value
Da stand Pos00, statt Pos 12 (denn schliesslich ist es die 12. Position)
Das heist es hat mir den preis von Pos00 oben wieder gelöscht. Und wo nix ist, kann man auch nix übertragen.
Gruss gary
Die folgende Nachricht zum Thema stammt von: ratio, 01. 10. 2007, 07:32
»» Hab den Fehler endlich gefunden:
ich schrieb ja schon: bei einer Funktion wäre das nicht passiert. Dein Fehler ist ein typischer Kopierfehler, der durch Zusammenfassen gleichartiger Routinen zu einer Funktion statt x-maligem Kopieren und Anpassen hätte vermieden werden können.
Die folgende Nachricht zum Thema stammt von: plan_B, 30. 09. 2007, 11:38
Hallo,
[link:http://de.wikipedia.org/wiki/Und_täglich_grüßt_das_Murmeltier]
lass' den Albtraum enden, und öffne nicht immer neue Threads ...
SCNR
Gruß plan_B
--
*®*´¯`·.¸¸.·
Die folgende Nachricht zum Thema stammt von: gary, 30. 09. 2007, 15:35
»» SCNR
»»
Hi Plan B,
Ich wersteh dich , wirklich ! Ich bin seit Tagen oder Wochen am Programmieren. Meine Frau denkt schon sie sei Witwe, meine Kinder denken Papa sei verreist, und mein ne PC's laufen heiss...
Ich mach sogar kleine Fortschritte, also es geht ja vorwärts, so ist es nicht.
But - I never, ever give up !!!
Andere schaffen das auch, dann kann ich es auch schaffen. Da hängt schon zu viel Energie von mir drin. Desshalb vermute ich werd ich eure hilfe noch ein wenig in Anspruch nehmen. Die wo möchten dürfen gerne helfen. Die die es stört brauchen ja nicht zu antworten.
Nur zu Beruhigung: Es ist nicht sinnlos was ihr sagt. Ganz bestimmt nicht. Ohne euch wär ich nie soweit gekomen.
Dickes Dankeschön an alle Helfer
gruss gary
Die folgende Nachricht zum Thema stammt von: Struppi, 01. 10. 2007, 13:49
»» Zum Beispiel:
um mal zu zeigen wie es ungefähr funktionieren könnte (ohne Beispiel HTML Code ist das nur bedingt möglich und ich jetzt auch keine Lust mir ein entsprechendes Beispiel zusammenzubasteln)
Dein Formular sollte so aussehen:
<form action="..." onsubmit="return chkFormular(this);">
Das JS in etwa so:function chkFormular (form) {
var i = 0;
while( chkSelectBox(form, i++) ) {}
}
function chkSelectBox(form, nr) {
var nr = ('00' + nr).substr(-2);
var box = form['Box' + nr];
if(!box) return false;
for(var i = 0; i < box.length; i++) {
if (box.options[i].selected) form.Vambox.value = box.options[i].value;
}
form['Pos' +nr].value = vorkomma00 + "," + nachkomma00 + " Euro";
return true;
}
Das Skript findet alle select-boxen mit dem Namen BoxXX wobei XX für eine zweistellige Nummer ist, die durchnumeriert sein muss (beiginnend bei 00)
Da ich nicht weiß woher vorkomma00 und nachkomma00 kommen, kann ich nicht sagen wie du das machst.
Aber!
Warum machst du das?
die Werte werden doch so oder so verschickt und diese auf dem Server zusammenzubasteln ist immer sinnvoller, als auch eine Technik zu setzen deren vorhandensein du nicht sicher weißt.
Struppi.
© 1998-2006
Impressum, Software: Classic Forum