Stiki: Variable ist nicht definiert

Hallo

ich greife in meinem script auf mehrere id´s zu und mache diese zu variablen wie zb. auch...

<select name="geburtsjahr" id="geburtsjahr" onchange="hunde_berechnen()" >
    <option value="">Bitte Wählen</option>
    <option value='2011'>2011</option><option value='2010'>2010</option><option value='2009'>2009</option><option value='2008'>2008</option><option value='2007'>2007</option>
...... // da sind noch mehr jahre^^
</select>

im header steht...
<script type="text/javascript">
    function hunde_berechnen(){

...
var halter_geburtsjahr=document.getElementById('geburtsjahr').value;
...
}

wenn ich nun auf die variable zugreifen will mit zb.

if (halter_geburtsjahr != "" && halter_geburtsmonat != "" && halter_geburtstag != ""){

dann kommt der fehler halter_geburtsjahr is not defined

aber ich habe sie doch definiert

  1. Moin!

    aber ich habe sie doch definiert

    In derselben Funktion?

    - Sven Rautenberg

    1. Hatte es doof geschrieben aber ja der steht in der gleichen funktion

      oben definiere ich und dann rage ich ab wenn alles einen wert hat soll es los gehn aber, er sagt das ich nicht definiert habe

      1. Ich habe nun mal die definition direkt vor die abfrage gepackt und nun sagt er mir das die variable geburtstag null ist.

        <select name="geburtstag" id="geburtstag" onchange="hunde_berechnen()" >
            <option value="">Bitte Wählen</option>
        <option value='1'>1</option>
          <option value='2'>2</option>
            <option value='3'>3</option>
            <option value='4'>4</option>
            <option value='5'>5</option>
            <option value='6'>6</option>
        </select>

        1. Hi,

          Ich habe nun mal die definition direkt vor die abfrage gepackt und nun sagt er mir das die variable geburtstag null ist.

          in dem von Dir gezeigten Code ist nirgendwo eine Variable geburtstag ersichtlich, geschweige denn eine Nutzung derselben, die zu einem Fehler führen könnte.

          Poste Dein Problem so, dass *andere* es nachvollziehen können, nicht nur Du.

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. <script type="text/javascript">
                function hunde_berechnen(){

            var hausrat=leseCookie("hausrat");
            var unfall=leseCookie("unfall");
            var anrede_halter=document.getElementById('anrede_halter').value;
            var hunde_sb=document.getElementById('hunde_sb').value;

            	var hunde\_anzahl=document.getElementById('hunde\_anzahl').value;  
            	  
            	  
            
            	var vorpreis = (leseCookie("phv\_gesamt"));  
            	if (hausrat == "ja"){vorpreis = (leseCookie("kosten\_hausrat"));}  
            	if (unfall == "ja"){  
            						if (leseCookie("personen") == "keine"){vorpreis = (leseCookie("kosten\_unfall"));}  
            							else if (leseCookie("personen") == "1"){vorpreis = (leseCookie("kosten\_unfall1"));}  
            							else if (leseCookie("personen") == "2"){vorpreis = (leseCookie("kosten\_unfall2"));}  
            							else if (leseCookie("personen") == "3"){vorpreis = (leseCookie("kosten\_unfall3"));}  
            							else if (leseCookie("personen") == "4"){vorpreis = (leseCookie("kosten\_unfall4"));}  
            							else vorpreis = (leseCookie("kosten\_unfall5"));}  
            	}  
            	var halter\_geburtstag=document.getElementById('geburtstag').value;  
            	var halter\_geburtsmonat=document.getElementById('geburtsmonat').value;  
            	var halter\_geburtsjahr=document.getElementById('geburtsjahr').value;  
            	  
            if (halter\_geburtsjahr != "" && halter\_geburtsmonat != "" && halter\_geburtstag != ""){  
            	var d = new Date(halter\_geburtsjahr, halter\_geburtsmonat - 1, halter\_geburtstag);  
            			var sekunden = d.getTime();  
            			  
            			var heute = new Date();  
            			var sekunden\_heute = heute.getTime();  
            			  
            			var alter = sekunden\_heute - sekunden;  
            			  
            			var jahr\_in\_ms = 365.25 \* 24 \* 60 \* 60 \* 1000;  
            			var alter\_halter = alter / jahr\_in\_ms;  
            

            if (alter_halter != "" && hunde_sb != "" && anrede_halter != ""){

            .....
            </script

            Die angeben hole ich mir hier raus:
            ...
             <select name="anrede_halter" id="anrede_halter" onchange="hunde_berechnen()">

            <option value="">Bitte Wählen</option>
              <option value="Herr">Herr</option>
              <option value="Frau">Frau</option>
            </select>
            </td>

            </tr>
                <td width="125px" height="25px">Alter des Hundehalter: </td>
                <td>
                <select name="geburtstag" id="geburtstag" onchange="hunde_berechnen()" >
                <option value="">Bitte Wählen</option>
            <option value='1'>1</option>
              <option value='2'>2</option>
                <option value='3'>3</option>
                <option value='4'>4</option>
                <option value='5'>5</option>
                <option value='6'>6</option>
                <option value='7'>7</option>
                <option value='8'>8</option>
                <option value='9'>9</option>
                <option value='10'>10</option>
                <option value='11'>11</option>
                <option value='12'>12</option>
                <option value='13'>13</option>
                <option value='14'>14</option>
                <option value='15'>15</option>
                <option value='16'>16</option>
                <option value='17'>17</option>
                <option value='18'>18</option>
                <option value='19'>19</option>
                <option value='20'>20</option>
                <option value='21'>21</option>
                <option value='22'>22</option>
                <option value='23'>23</option>
                <option value='24'>24</option>
                <option value='25'>25</option>
                <option value='26'>26</option>
                <option value='27'>27</option>
                <option value='28'>28</option>
                <option value='29'>29</option>
                <option value='30'>30</option>
                <option value='31'>31</option>
                </select>
                </td>
                <td>
                <select name="geburtsmonat" id="geburtsmonat" onchange="hunde_berechnen()" >
                <option value="">Bitte Wählen</option>
                <option value='1'>Januar</option>
                <option value='2'>Februar</option>
                <option value='3'>März</option>
                <option value='4'>April</option>
                <option value='5'>Mai</option>
                <option value='6'>Juni</option>
                <option value='7'>Juli</option>
                <option value='8'>August</option>
                <option value='9'>September</option>
                <option value='10'>Oktober</option>
                <option value='11'>November</option>
                <option value='12'>Dezember</option>
                </select>
                </td>
                <td>
                <select name="geburtsjahr" id="geburtsjahr" onchange="hunde_berechnen()" >
                <option value="">Bitte Wählen</option>
                <option value='2011'>2011</option><option value='2010'>2010</option><option value='2009'>2009</option><option value='2008'>2008</option><option value='2007'>2007</option><option value='2006'>2006</option><option value='2005'>2005</option><option value='2004'>2004</option><option value='2003'>2003</option><option value='2002'>2002</option><option value='2001'>2001</option><option value='2000'>2000</option><option value='1999'>1999</option><option value='1998'>1998</option><option value='1997'>1997</option>

            </select>
            ...

      2. Hallo,

        oben definiere ich und dann rage ich ab wenn alles einen wert hat soll es los gehn aber, er sagt das ich nicht definiert habe

        dann ist das mit den Angaben, die du uns zur Verfügung stellst, nicht nachvollziehbar.
        We need more information.

        So long,
         Martin

        --
        Die letzten Worte des Architekten:
        Mir fällt da gerade was ein...
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  2. Hi,

    im header steht...
    <script type="text/javascript">
        function hunde_berechnen(){

    ...
    var halter_geburtsjahr=document.getElementById('geburtsjahr').value;
    ...
    }

    Damit definierst du diese Variable lokal innerhalb der Funktion. Außerhalb der Funktion ist sie nicht verfügbar; sie wird sofort beim Beenden der Funktion wieder entsorgt.

    if (halter_geburtsjahr != "" && halter_geburtsmonat != "" && halter_geburtstag != ""){

    dann kommt der fehler halter_geburtsjahr is not defined
    aber ich habe sie doch definiert

    Ja. Aber im falschen Scope (Gültigkeitsbereich) ...
    Oder erfolgt der Zugriff auch noch in derselben Funktion?

    So long,
     Martin

    --
    Der Gast geht solange zum Tresen, bis er bricht.
    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
  3. Hi,

    <select name="geburtsjahr" id="geburtsjahr" onchange="hunde_berechnen()" >
    var halter_geburtsjahr=document.getElementById('geburtsjahr').value;

    dass die zu <select>-Elementen gehörenden DOM-Objekte nicht zwangsläufig eine value-Eigenschaft besitzen, ist Dir bewusst?

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. dass die zu <select>-Elementen gehörenden DOM-Objekte nicht zwangsläufig eine value-Eigenschaft besitzen, ist Dir bewusst?

      Ach? http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#dom-select-value

      Wann haben sie denn keine value-Eigenschaft?

      Mathias

      1. Hi,

        dass die zu <select>-Elementen gehörenden DOM-Objekte nicht zwangsläufig eine value-Eigenschaft besitzen, ist Dir bewusst?
        Ach? http://www.whatwg.org/specs/web-apps/current-work/multipage/the-button-element.html#dom-select-value
        Wann haben sie denn keine value-Eigenschaft?

        manchmal, wenn der Browser die Spezifikation nicht gelesen hat. Leider genügt es in der Regel nicht, mit dem Browser die von Dir genannte URL aufzurufen, weil einige dieser Programme noch immer zu faul sind, das was sie anzeigen auch tatsächlich zu lesen.

        Ernsthaft, *Dir* muss ich doch wohl nicht erklären, was im Archiv als häufiges Problem recherchierbar ist, oder?

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Hallo,

          Ältere Internet Explorer kennen die value-Eigenschaft beim select-Element, allerdings spiegelt sie nur den Wert der gewählten Option wider, wenn diese ein explizites value-Attribut hat, also bspw. <option value="Foo">Foo</option>. Erst im IE 9 gibt value den ausgewählten Wert wieder, selbst wenn kein value-Attribut angegeben ist.

          Die abwärtskompatible Alternative field.options[field.selectedIndex].value funktioniert auch erst ab IE 8, darunter ist ebenfalls ein zusätzliches value-Attribut beim option-Element nötig.

          Mit diesen value-Attributen funktioniert die value-Eigenschaft zumindest ab IE 5.5, darunter habe ich nicht getestet.

          Diese Informationen habe ich nicht im Archiv gefunden; daraufhin musste ich es ausprobieren.

          Mathias