mario: for schleife/formularobjekte...fehlersuche

hi javascript faehige
ich finde einen fehler nicht.
ich habe ein form auf einer website mit checkbox/input feldern
und folgendes script, das beim click auf ein image aufgerufen wird,
um felder zu beschriften.
ich habe den html text, der das form darstellt jetzt mal nicht gepastet

die stelle im skript, die laut browser falsch ist habe ich mit einem kommentar
referenziert s.u.
falls jemand den fehler auf anhieb sieht, würde ich mich über einen hinweis freuen.
danke
mario

function cr()

{

var a=1;
  //Abfrage auf checkbox#Status in for schleife
for (i=122;i>114;i--)
  {
var object = String.fromCharCode(i); //checkboxen haben die namen x bis s
var c= new String("a"+a+"n");
var a=new String("b"+a+"n");

//folgende zeile zeigt verursacht fehlermeldung:document.rform.elements[object][0] hätte keine properties
if (document.rform.elements[object][0].checked) {

document.rform.elements[c][0].value = document.rform.elements[a][0].value;
alert(i+a);
a++;}
else{
document.rform.elements[c][0].value="";
a++;}

}}

  1. Hallo Mario

    Deine Schleife sieht etwas sehr merkwürdig aus. Entscheidend sind aber die folgenden Zeilen:

    »»  var object = String.fromCharCode(i); //checkboxen haben die namen x bis s
    »»  var c= new String("a"+a+"n");
    »»  var a=new String("b"+a+"n");

    Javascript besitzt eine interne Tyenkonvertierung und baut sich sozusagen zusammen, was er braucht. :-) Naja meistens zumindest.

    Du bildest hier Stringobjekte, mit denen du  ganz andere Elemente ansprechen willst.

    Konkreter gesagt: du willst dir einen Namen zusammenbauen und erzeugst dabei etwas Neues. Außerdem überberschreibst du laufend das a. Löschst also deine Variable.

    Die Lösung:

    »»  document.rform.elements["a"+a+"n"][0].value = document.rform.elements["b"+a+"n"][0].value;

    Viele Grüße

    Antje

  2. Hallo Mario!

    »»  if (document.rform.elements[object][0].checked) {

    was zum ... ist denn das ??? elements[][] ??? was willst du mit dem zweidimensionalen Array bezwecken ???

    Vielleicht wäre der HTML-Code ja doch ganz nützlich, brauchst ja nicht alles reinzustellen, nur das woraufs ankommt ;-)

    Schöne Grüsse
    Bernhard

    1. Hi Bernhard,

      was zum ... ist denn das ??? elements[][] ??? was willst du mit dem
      zweidimensionalen Array bezwecken ???

      Radiobuttons und Checkboxen wollen das so, bei denen kann es mehrere eines
      Namens (bzw.Nr.) geben, die dann in einem Array angesprochen werden.

      Wenn du bei sowas
      <form name="Testform">
        <input type=radio name="Art" value="mit"> mit DHTML
        <input type=radio name="Art" value="ohne"> ohne DHTML
      </form>

      z.b: mit
        if(document.Testform.Art[0].checked==true)
      die erste Box abfragst fällt das gar nicht auf, aber
        document.Testform.elements["Art"][0].checked
      geht als Schreibweise genauso.

      Gruss,
      Carsten

      1. Hallo!

        Wow, da bin ich ja mal wieder voll ins Fettnäpfchen gestiegen, aber bis zum Hals ;-)

        Ich hab das noch nie gesehen! und daher für falsch gehalten!
        Ich dachte immer man spricht Radio-groups mit der "value" propertiy an.

        Aber man lernt nie aus,
        sorry Mario!

        trotzdem schöne grüsse,
        Bernhard

  3. Hi
    Zusaetzlich dem was Antje gesagt hat:
    »»  for (i=122;i>114;i--)

    {

    »»  var object = String.fromCharCode(i); //checkboxen haben die namen x bis s
    So wie du das machst haben die checkboxen die namen z bis s! Du musst also bei i=120 beginnen.

    //folgende zeile zeigt verursacht fehlermeldung:document.rform.elements[object][0] hätte keine properties

    »»  if (document.rform.elements[object][0].checked) {
    Du fragst hier checkboxen ab und da muss es
      if (document.rform.elements[object].checked) {
    heissen!
    Tschau Holger

  4. danke allen zusammen

    problem gelöst

    gruess
    mario