Funktion funktioniert nicht richtig
romero
- javascript
hallöchen,
ich hab wieder ein problem aber diesmal weiß ich leider wirklich nicht weiter.
ich besitze eine auf tabellen-aufgebaute *.hta-datei.
da sind mehrere felder zum ausfüllen und anklicken (radio's,textfelder,auswahllisten).die erste funktion ist eine onclick-funktion (selektion-funktion) wo ich,je nach dem was selektiert wird,ein bestimmter radio-button gechecked wird.
dann kommt meine übernehmen-funktion,wo er durch verschiedende if-else-abfragen bestimmte sachen in einer spalte ausgibt (z.b. if( das = diesem ){ dann soll das ausgegeben werden } else { ... } ).diese abfragen habe ich einige drin,da ich für jeden fehler explizit was ausgeben möcht was falsch ist.
in dieser funktion gibt es viele variablen,welche ich mit return [ Flugzeugtyp , Sektion , Bereich1 , Bereichsnummer1 , Bereich2 , Bereichsnummer2 , Bereich3 , Bereichsnummer3 , STL_Anlegung , STL_Folie , Bereich1_Folie , Bereich1_Tür , Bereich4_Tür ];
ersteinmal zurückgebe.
weiterhin besitzt diese übernehmen-funktion 2 buttons,welche durch fehler aufgerufen werden.drückt man sie,werden 2 funktionen gestartet.die 1. funktion ist die bestätigen-funktion,da soll nur das feld der fehlermeldung mit den buttons gelöscht werden bzw. kein inhalt.die 2. funktion ist die abbrechen-funktion,da soll sozusagen der richtige zustand hergestellt werden,also so wie er richtig sein sollte.
die abbrechen-funktion nimmt dann die variablen aus der übernehmen-funktion wie folgt:
var Ausgabe_Abbrechen = Übernehmen();
var Flugzeugtyp = Ausgabe_Abbrechen[0];
var Sektion = Ausgabe_Abbrechen[1];
var Bereich1 = Ausgabe_Abbrechen[2];
var Bereichsnummer1 = Ausgabe_Abbrechen[3];
var Bereich2 = Ausgabe_Abbrechen[4];
var Bereichsnummer2 = Ausgabe_Abbrechen[5];
var Bereich3 = Ausgabe_Abbrechen[6];
var Bereichsnummer3 = Ausgabe_Abbrechen[7];
var STL_Anlegung = Ausgabe_Abbrechen[8];
var STL_Folie = Ausgabe_Abbrechen[9];
var Bereich1_Folie = Ausgabe_Abbrechen[10];
var Bereich1_Tür = Ausgabe_Abbrechen[11];
var Bereich4_Tür = Ausgabe_Abbrechen[12];
also die selben werte wie bei übernehmen-funktion.
nun aber soll ein weiteres script ausgeführt (mittels einem start-button) werden,welche ebenfalls diese variablen brauch.
nehmen ich die variablen von der übernehmen-funktion genauso wie oben zu sehen,dann gibt er zwar alles so aus wie ich möcht,aber er springt irgendwie in die übernehmen-funktion zurück und gibt da wieder die selbe fehlermeldung aus,welche ich mittels dem bestätigen-button bestätigt habe.
wenn ich aber die variablen der abbrechen-funktion übernehme (und ebenfalls die 2 verschiedenen buttons drücke) und nun den start-button betätige,dann kommt zwar nicht mehr die fehlermeldung zum vorschein,aber wählt einen anderen radio-button aus bzw springt in die selektion-funktion zurück und durchläuft die übernehmen-funktion.
es ist wie eine schleife welche er durchläuft.
wie kann ich es so umstellen,das er,wenn er den bestätigen-button (+funktion) drückt,das er dann diese werte,also die werte aus der übernehmen-funktion nimmt,und zum anderen,die der abbrechen-funktion.und dann das er nicht mehr in diese anderen funktionen springt.
lg romero
wie kann ich es so umstellen,das er,wenn er den bestätigen-button (+funktion) drückt,das er dann diese werte,also die werte aus der übernehmen-funktion nimmt,und zum anderen,die der abbrechen-funktion.und dann das er nicht mehr in diese anderen funktionen springt.
Sorry ist ne dumme Antwort, aber alles was mir dazu einfällt ist, in dem du es eben genauso machst :-)
Wenn er irgendwann wohin springt, wird da halt noch irgendwas nicht stimmen.
Lieber romero,
var Ausgabe_Abbrechen = Übernehmen();
var Flugzeugtyp = Ausgabe_Abbrechen[0];
var Sektion = Ausgabe_Abbrechen[1];
var Bereich1 = Ausgabe_Abbrechen[2];
var Bereichsnummer1 = Ausgabe_Abbrechen[3];
var Bereich2 = Ausgabe_Abbrechen[4];
var Bereichsnummer2 = Ausgabe_Abbrechen[5];
var Bereich3 = Ausgabe_Abbrechen[6];
var Bereichsnummer3 = Ausgabe_Abbrechen[7];
var STL_Anlegung = Ausgabe_Abbrechen[8];
var STL_Folie = Ausgabe_Abbrechen[9];
var Bereich1_Folie = Ausgabe_Abbrechen[10];
var Bereich1_Tür = Ausgabe_Abbrechen[11];
var Bereich4_Tür = Ausgabe_Abbrechen[12];
warum arbeitest Du nicht mit einem Objekt, welches bereits über passend benannte Eigenschaften verfügt, anstatt durchnummerierte Array-Indices zu benutzen?
~~~javascript
var Ausgabe_Abbrechen = {
Flugzeugtyp : '...',
Bereich1 : '...',
Bereichsnummer1: '...',
...
Bereich4_Tür : '...' // hier kein Komma!
}
alert("Flugzeugtyp: " + Ausgabe_Abbrechen.Flugzeugtyp);
Das obige Objekt ist als Objektliteral notiert, um die Struktur zu verdeutlichen, die ich mir vorstelle. Deine Funktion "Übernehmen" kann dieses Objekt auf verschiedene Art zusammenstellen, um es dann zurück zu geben.
Liebe Grüße,
Felix Riesterer.
Lieber romero,
var Ausgabe_Abbrechen = Übernehmen();
var Flugzeugtyp = Ausgabe_Abbrechen[0];
var Sektion = Ausgabe_Abbrechen[1];
var Bereich1 = Ausgabe_Abbrechen[2];
var Bereichsnummer1 = Ausgabe_Abbrechen[3];
var Bereich2 = Ausgabe_Abbrechen[4];
var Bereichsnummer2 = Ausgabe_Abbrechen[5];
var Bereich3 = Ausgabe_Abbrechen[6];
var Bereichsnummer3 = Ausgabe_Abbrechen[7];
var STL_Anlegung = Ausgabe_Abbrechen[8];
var STL_Folie = Ausgabe_Abbrechen[9];
var Bereich1_Folie = Ausgabe_Abbrechen[10];
var Bereich1_Tür = Ausgabe_Abbrechen[11];
var Bereich4_Tür = Ausgabe_Abbrechen[12];
>
> warum arbeitest Du nicht mit einem Objekt, welches bereits über passend benannte Eigenschaften verfügt, anstatt durchnummerierte Array-Indices zu benutzen?
>
> ~~~javascript
var Ausgabe_Abbrechen = {
> Flugzeugtyp : '...',
> Bereich1 : '...',
> Bereichsnummer1: '...',
> ...
> Bereich4_Tür : '...' // hier kein Komma!
> }
>
> alert("Flugzeugtyp: " + Ausgabe_Abbrechen.Flugzeugtyp);
Das obige Objekt ist als Objektliteral notiert, um die Struktur zu verdeutlichen, die ich mir vorstelle. Deine Funktion "Übernehmen" kann dieses Objekt auf verschiedene Art zusammenstellen, um es dann zurück zu geben.
Liebe Grüße,
Felix Riesterer.
muss sagen,nachdem ich diesen post verfasst hatte,habe ich es auch so gemacht.keine ahnung warum ich noch nicht früher darauf gekommen bin aber denke,wenn man das problem beschreibt,dann fallen einem auch solche sachen ein.
habe es genaus so gemacht wie oben beschrieben.habe es so formuliert:
return Ausgabe_Abbrechen = {
Flugzeugtyp : '...',
Bereich1 : '...',
Bereichsnummer1: '...',
...
Bereich4_Tür : '...'
}
diese wird dann in der funktion fehlermeldung( Meldung ) übernommen,und da werden halt eventuelle var's überschrieben oder nicht.und in der go-funktion kommt halt alles wieder zusammen.
es war auch das problem,das ich da 2 funktionen hatte,welche aber ein und das selbe sind.einmal bestätigen und zum anderen abbrechen.vorher hat es einmal direkt aus der übernehmen-funktion die var's genommen,zum aneren aus der abbrechen-funktion.da kam es sicherlich zu überschneidungen,da ich ja einmal die daten aus übernehmen brauchte,zum anderen aus abbrechen.denke da wusste er nicht,was er nehmen sollte.da haben sich sozusagen die var's kollidiert :)
aber ne andere frage.ich rufe die abbrechen- bzw die bestätigen-funktion nun so auf:
[code lang=javascript]document.getElementById( "Fehler_Meldung" ).innerHTML = '<input type="button" value="bestätigen" onclick="Fehlermeldung( 1 )"></input> <input type="button" value="bestätigen" onclick="Fehlermeldung( 2 )"></input>'
und die dazugehörige funktion so:
function Fehlermeldung( Meldung )
{
if( Meldung == 1 )
{ ... } else
if( Meldung == 2 )
{ ... };
};
geht das nur mit zahlen?denn wenn ich in die onclick-funktion so schreibe:
onclick="Fehlermeldung( 'bestätigen' );"
~~~ dann gibt es eine fehlermeldung das er ein ";" an der stelle wo bestätigen steht,also hier:
~~~javascript
onclick="Fehlermeldung( ';bestätigen' );"
~~~.aber dann geht nix mehr.
mach ich da was falsch?
mit zahlen klappt es wunderbar.
lg romero
geht das nur mit zahlen?denn wenn ich in die onclick-funktion so schreibe:
onclick="Fehlermeldung( 'bestätigen' );"
> ~~~javascript
> onclick="Fehlermeldung( ';bestätigen' );"
~~~.aber dann geht nix mehr.
> mach ich da was falsch?
Du musst identische Anführungszeichen innerhalb Anführungszeichen maskieren. Wie soll sonst JS erkennnen, was deine Zeichenkette ist:
~~~javascript
'<input ... onclick="Fehlermeldung( ';bestätigen' )">...'
Siehst du wo die Zeichenkette zu Ende ist?
Struppi.
geht das nur mit zahlen?denn wenn ich in die onclick-funktion so schreibe:
onclick="Fehlermeldung( 'bestätigen' );"
> > ~~~javascript
> > onclick="Fehlermeldung( ';bestätigen' );"
~~~.aber dann geht nix mehr.
> > mach ich da was falsch?
>
> Du musst identische Anführungszeichen innerhalb Anführungszeichen maskieren. Wie soll sonst JS erkennnen, was deine Zeichenkette ist:
>
> ~~~javascript
'<input ... onclick="Fehlermeldung( ';bestätigen' )">...'
>
Siehst du wo die Zeichenkette zu Ende ist?
Struppi.
aber was nehm ich denn da für welche?
'<input ... onclick="Fehlermeldung( ';bestätigen' )">...'
hier sind ja alle anführungszeichen ja schon vergeben?das ' ist ja nun vorn und hinten verwendet.kann also nicht mehr dazwischen genommen werden. das " ist für das onclick verwendet.wenn ich da anstelle des ' nun das " verwende,dann meckert der auch rum oder?weil dann ist für ihn an der stelle onclick="fehlermeldung( " <- schon schluss und der onclick wird nicht ausgeführt als wenn ich so schreibe: onclick="fehlermeldung( "bestätigen" )".also was für möglichkeiten hab ich denn da noch?
lg romero
Struppi.
Du musst nicht alles zitieren, es reicht das worauf du antworten willst.
aber was nehm ich denn da für welche?
Ich sag doch, du musst sie maskieren. Wenn du nicht weißt wie das geht, hättest du ja mal googlen können oder wenn du's nicht verstehst, fragen.
Struppi.
Struppi.
Du musst nicht alles zitieren, es reicht das worauf du antworten willst.
aber was nehm ich denn da für welche?
Ich sag doch, du musst sie maskieren. Wenn du nicht weißt wie das geht, hättest du ja mal googlen können oder wenn du's nicht verstehst, fragen.
Struppi.
ich hatte es wiedermal beim schreiben gemerkt was ich machen muss.einfach den wert bestätigen so maskieren: " bestätigen " .naja irgendwie fällt mir das immer hinterher ein,sorry.aber trotzdem vielen dank fürs lesen und antworten.
lg romero