Estelle: was ist falsch? wenn checkbox geklickt, dann id verändern

hallo.
ich habe hier diese selbstgeschriebene js funktion, die drei checkboxen überwachen soll und eine endsumme je nach auswahl berechnen soll:

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">  
function getTotal() {  
 var total = 0;  
 if (document.form.day1.checked) total += 5;  
 if (document.form.day2.checked) total += 10;  
 if (document.form.day3.checked) total += 8;  
 document.getElementById('ptotal').value = 'Gesamtbetrag: &euro; '+total;  
}  
getTotal();  
</SCRIPT>

am ende des javascript bereichs rufe ich die funktion dann auf, da ja auch vor erster auswahl das ausgabefeld mit inhalt versehen werden soll.

ansonsten rufe ich die funktion im <input> feld auf
<input onClick="getTotal()" type="checkbox" name="day1" value="5" />

mein formular-tag ist mit <form name="form" ..> definiert, damit ich mit document.form.day1... arbeiten kann.

dazu gibt es im html code noch das ausgabefeld
<p id="ptotal"></p>

nur was mache ich falsch? wo liegt der denkfehler?

ps.: das problem taucht unter apache, js 1.2 auf

  1. Hallo "Forum".
    Ist denn heute Abend niemand hier, der mir weiterhelfen kann/will?
    Habe ich mich vieleicht unklar ausgedrückt? Ich denke doch nicht. Ist mein erster Eintrag hier im Forum. Laßt mich bitte nicht hängen ;-)
    LG Estelle

  2. Hallo Estelle,

    document.getElementById('ptotal').value = 'Gesamtbetrag: &euro; '+total;

    dazu gibt es im html code noch das ausgabefeld
    <p id="ptotal"></p>

    nur was mache ich falsch? wo liegt der denkfehler?

    Das ein P-tag kein Attribut value hat, so wie Du es gern hättest.
    Du könntest mit innerHTML arbeiten oder mit createTextNode() anstelle von value.

    Mit freundlichem Gruß
    Micha

    1. Das ein P-tag kein Attribut value hat, so wie Du es gern hättest.

      oh. ach so. hat denn ein <div> tag das attribut value? oder was gibts noch in der richtung von p und div?

      Danke schonmal.
      LG Estelle.

      1. Hallo Estelle,

        hat denn ein <div> tag das attribut value? oder was gibts noch in der richtung von p und div?

        Wieso schaust Du Dir nicht an, was ich Dir vorgeschlagen habe? Damit geht genau das, was Du vor hast.

        Mit freundlichem Gruß
        Micha

    2. Du könntest mit innerHTML arbeiten

      HallO!
      ich habe mir das innerhtml jetzt mal angeschaut und komisch: wenn ich das gesamte beispiel skript aus dem link (oben) in meinen quellcode kopiere, gehts nicht. sonst schon.
      was kann in einem html quelltext denn das unterbinden?? gleiche id bezeichnungen habe ich jedenfalls nicht...
      LG Estelle

      1. Hallo Estelle,

        »» »» Du könntest mit innerHTML arbeiten

        was kann in einem html quelltext denn das unterbinden?? gleiche id bezeichnungen habe ich jedenfalls nicht...

        Ich kanns leider gerade nicht erkennen, was Du versucht hast. Vielleicht hilfst Du mir mit einem (temporären) Link oder ein paar Zeilen Quellcode auf die Sprünge?

        Mit freundlichem Gruß
        Micha

  3. Hallo Estelle,

    document.getElementById('ptotal').value = 'Gesamtbetrag: &euro; '+total;

    <p id="ptotal"></p>

    nur was mache ich falsch? wo liegt der denkfehler?

    wie derletztekick schon schrieb, hat <p> keinen Value. innerHTML wäre eine Möglichkeit, sollte aber nur benutzt werden, wenn in das <p> andere Tags gesetzt werden sollen und man keine Lust hat, createElement und appendChild zu benutzen. InnerHTML gehört nicht zum DOM, wird aber von (fast?) allen modernen Browsern unterstützt.

    Bei einfachen Textausgaben nehme ich immer .firstChild.data (http://de.selfhtml.org/javascript/objekte/node.htm#first_child und http://de.selfhtml.org/javascript/objekte/node.htm#data). Dazu muss dein <p> aber schon Inhalt haben, sonst gibt es kein firstChild:

    document.getElementById('ptotal').firstChild.data = 'Gesamtbetrag: '+String.fromCharCode(8364)+' '+total;

    <p id="ptotal">&nbsp;</p>

    Ich bin nicht sicher, ob &euro; im String interpretiert wird, auf einer Seite habe ich den CharCode wie oben verwendet.

    Gruß, Jürgen

    1. Hi,

      InnerHTML gehört nicht zum DOM, wird aber von (fast?) allen modernen Browsern unterstützt.

      Es wird von allen W3C-DOM-Browsern unterstützt.

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. hi,

        InnerHTML gehört nicht zum DOM, wird aber von (fast?) allen modernen Browsern unterstützt.

        Es wird von allen W3C-DOM-Browsern unterstützt.

        Nö.

        (innerHTML vielleicht ...)

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hi,

          InnerHTML gehört nicht zum DOM, wird aber von (fast?) allen modernen Browsern unterstützt.
          Es wird von allen W3C-DOM-Browsern unterstützt.
          Nö.
          (innerHTML vielleicht ...)

          ? Bitte um Erklärung. Möchte nicht dumm sterben!

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
          1. Hallo Cybaer, hallo wahsaga,

            InnerHTML gehört nicht zum DOM, wird aber von (fast?) allen modernen Browsern unterstützt.
            Es wird von allen W3C-DOM-Browsern unterstützt.
            Nö.
            (innerHTML vielleicht ...)

            ? Bitte um Erklärung. Möchte nicht dumm sterben!

            hier liegt das Problem des Zitieren eines Zitats vor. Dabei ist verlorengegangen, dass innerHTML am Anfang eines Satzes stand und daher groß (InnerHTML) geschrieben war.

            Gruß, Jürgen

            1. hi,

              hier liegt das Problem des Zitieren eines Zitats vor.

              Oder eins in der konsequenten Entscheidung für eine Schreibweise :-)

              Dabei ist verlorengegangen, dass innerHTML am Anfang eines Satzes stand und daher groß (InnerHTML) geschrieben war.

              In https://forum.selfhtml.org/?t=121656&m=782327 hast du es zwei mal am Anfang eines Satzes benutzt - dabei das erste mal in der "korrekten" Schreibweise, das zweite mal in der mit "angepasster".

              Ich gebe in solchen Fällen idR. der "korrekten" Schreibweise den vorzug, auch am Satzanfang - schließlich ist innerHTML ja sowas wie ein "Eigenname".

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
              1. Hallo wahsaga,

                Oder eins in der konsequenten Entscheidung für eine Schreibweise :-)

                ich war mir eben nicht sicher, was besser ist.

                Ich gebe in solchen Fällen idR. der "korrekten" Schreibweise den vorzug, auch am Satzanfang - schließlich ist innerHTML ja sowas wie ein "Eigenname".

                Da stimme ich zu. Nur ob ich immer dran denke?

                Gruß, Jürgen

            2. Hi,

              hier liegt das Problem des Zitieren eines Zitats vor. Dabei ist verlorengegangen, dass innerHTML am Anfang eines Satzes stand und daher groß (InnerHTML) geschrieben war.

              Erlaß: Hiermit gilt eine Auszeichnungspflicht für Wahsagas Postings mit üblichen, standardisierten Mitteln der Ironiekennzeichnung, gemäß Smileyverordnung 7, Paragraph 3, Abschnitt 2 vom 1.4.1999. Die Auszeichnung ist vom Poster selbst vorzunehmen.

              Der Erlaß tritt mit sofort in Kraft.

              Gegen diesen vorläufigen Erlaß kann Rechtsbeschwerde eingelegt werden.

              Hochachtungsvoll, Geheimer Oberrat Cybaer

              Heidelberg, den 17.1.2006
              [Stempel]

              --
              Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  4. am ende des javascript bereichs rufe ich die funktion dann auf, da ja auch vor erster auswahl das ausgabefeld mit inhalt versehen werden soll.

    du kannst getTotal() nicht aufrufen, bevor das Formular geladen ist. D.h. du artest ab, bis die Seite fertig ist oder du fügst den Aufruf in einen Skriptblock hinter dem Fomrular in deinen Quellcode. Das was du jetzt machst verursacht auf jeden fall einen Fehler. Diese siehst du, wenn du einen Geckobrowser (Mozilla, Firefox o.ä.) benutzt in der JS Konsole. Der IE zeigt diese ebenfalls an, wenn du auf die Fehlermeldung in der Statusleiste klickst, diese ist aber oft nicht zu gebrauchen da wenig aussagekräftig.

    dazu gibt es im html code noch das ausgabefeld
    <p id="ptotal"></p>

    nur was mache ich falsch? wo liegt der denkfehler?

    Wie schon erwähnt hat ein HTML kein value, sondern du willst hier den Textknoten ändern. Wenn du wirklich nur Text eintragen willst würd ich auch firstChild.data verwenden, dazu musst du wie schon erwähnt in den <p>-Tag noch ein &nbsp; einbauen.

    Struppi.