Von Formular zu JavaScript Ersetzen

Es wäre aber nett wenn du mir erklärst was es bringt eine globale Variable im eigentlichen Scope einer lokalen zu erzeugen.
Normalerweise führt dies nur zu Problemen siehe hier: http://www.mediaevent.de/javascript/globale-lokale-variablen.html
Auch ist eine implizite Vereinbarung einer Variablen als schlechte Programmierpraxis anzusehen da dies z.B. in Javascript auch zu Fehlern führen kann wenn die Variable nicht durch das Schlüsselwort var oder durch Zuweisung eines Wertes deklariert wird, kommt es zu einer Fehlermeldung im JS-Code.
Dann sind wir uns ja einig.
Ich denke nicht. Denn du redest davon das eine lokale keinen Einfluss auf eine globale hat. Wenn du aber aus einer lokalen eine globale Variable machst, dann hat diese wohl einen Einfluss auf jene.
Denn so entstehen zwei Variablen mit dem Variablennamen „obst“.

Du verwendest hier im Beitrag zwei verschiedene Varianten des Scriptes:
Script Nr. 1
Javascript:
var obst = "Obst";
function preis() {
     var obst = $("#obst").val(); //definiert eine lokale Variable
     console.log(obst);
}
und
Script Nr. 2
Javascript:
var obst = "Obst";
function preis() {
     obst = $("#obst").val(); //definiert eine lokale Variable
     console.log(obst);
}

Die zweite Variante führt zu dazu nur globale Variablen zu haben.
Meine Antwort #11 bezog sich darauf das du Script Nr. 2 angegeben hast und nicht wie gerade Script Nr. 1.

Viele Grüße
 
Zuletzt bearbeitet von einem Moderator:
Hallo, habe ich gelöst aber vieleicht nicht optimal aber es funktioniert, wie sagt man, war einfach und ist einfach,

Ihr habt recht gehabt, könnte es nicht funktionieren wie ich es vorgestellt habe, sondern Eure weg war richtig, und habe es probiert bist hat es geklappt, habe ich mich nicht aufgegeben, so ist meine lösung:

Code:
<!DOCTYPE html>
<html>
<body>

<form name="form">

OBST:
<select id="obst" onchange="preisObst(this)">
<option>Obst</option>
<option value="Apfel" selected="selected">Apfel</option>
<option value="Birne">Birne</option>
</select>

GEMUESE:
<select id="obst" onchange="preisGemuese(this)">
<option>Gemuese</option>
<option value="Tomate" selected="selected">Tomate</option>
<option value="Gurke">Gurke</option>
</select>

</form>

<script>

var obst;
obst = "Apfel";
var gemuese;
gemuese = "Tomate";

// Hier kommt script für Obst und Gemuese

function preisObst(artikelListeObst){
var obst;

if (artikelListeObst.value == "Apfel") {obst="Apfel";}
else if (artikelListeObst.value == "Birne") {obst="Birne";}
else {alert ("Bitte waelen eine Obst!")}

// Hier kommt script für Obst
}
preisObst();

function preisGemuese(artikelListeGemuese){
var gemuese;

if (artikelListeGemuese.value == "Tomate") {gemuese="Tomate";}
else if (artikelListeGemuese.value == "Gurke") {gemuese="Gurke";}
else {alert ("Bitte waelen eine Gemuese!")}

// Hier kommt script für Gemuese
}
preisGemuese();

</script>

</body>
</html>

Vieleicht kann jemand besser optimieren diese code, aber ich bin zu frieden dass es funktioniert, ich bedanke mich an alle beteiligen und viele Grüße Guri.
 
Zuletzt bearbeitet:
Ich würde es so machen:
Code:
function preisObst(artikelListeObst){
    var obst;
    switch (artikelListeObst.value) {
      case "Apfel":
      case "Birne":
        obst = artikelListeObst.value;
        // Hier kommt script für Obst
      default:
        alert ("Bitte waelen eine Obst!");
    }
}
 
Hallo, mit dise code unter bekomme ich als ergebnis nur die alert meldung,
Code:
function preisObst(artikelListeObst){
var obst;
switch (artikelListeObst.value) {
case "Apfel":
case "Birne":
obst = artikelListeObst.value;
// Hier kommt script für Obst
default:
alert ("Bitte waelen eine Obst!");
}
}

Dann habe ich so probirt wie unter, das selbe problem, nur alert meldung als ergebnis,
Code:
function preisObst(artikelListeObst){
var obst;
switch (artikelListeObst.value) {
case "Apfel":obst="Apfel";
case "Birne":obst="Birne";
obst = artikelListeObst.value;
// Hier kommt script für Obst
default:
alert ("Bitte waelen eine Obst!");
}
}

Dann habe ich so probiert wie unter, keine reakzion, rechnet nicht, egal ob man Apfel oder Birne wählt, auch keine alert meldung,
Code:
function preisObst(artikelListeObst){
var obst;
switch (artikelListeObst.value) {
case "Apfel":
break;
case "Birne":
break;
obst = artikelListeObst.value;
// Hier kommt script für Obst
default:
alert ("Bitte waelen eine Obst!");
}
}

Code:
function preisObst(artikelListeObst){
var obst;
switch (artikelListeObst.value) {
case "Apfel":obst="Apfel";
break;
case "Birne":obst="Birne";
break;
obst = artikelListeObst.value;
// Hier kommt script für Obst
default:
alert ("Bitte waelen eine Obst!");
}
}

Warum nicht funktioniert, weiss ich es nicht.
 
Zuletzt bearbeitet:
Da habe ich leider das break vergessen. So ist es richtig:
Code:
function preisObst(artikelListeObst) {
   var obst;
   switch (artikelListeObst.value) {
     case "Apfel":
     case "Birne":
       obst = artikelListeObst.value;
       // Hier kommt script für Obst
     break;
     default:
        alert("Bitte waelen eine Obst!");
     }
}
preisObst(document.getElementById("obst"));
Und Du musst beim Aufruf der Funktionen preisObst() und PreisGemuese() den Parameter übergeben.
 
Hallo und vielen Dank für die Muhe, es klappt nicht, nur mit mein primitiven script klappt es, und für mich genügt haptsache functioeniert ed, warum keine ahnung ist so, in der regel sollte auch mit switch case klappen genau so wie mit if else oder vielleicht mit schleife auch,

einzige was ich machen kann, wenn ich schieke dir die ganze scripten in ein zip paket privat, und dann kannst du hin krigen, und viele andere sachen optimieren, die die functionieren aber vielleicht sind schlecht programierert, sind kleinere scripte aber funktioenieren, noch mal Danke und viele Grüße Guri.
 
Zurück