Claudia Binias: Felder in verschachtelten iframes ansprechen

Hallo,

ich habe verschachtelete iframes
|-------------|
|F1           |
|  |----------|
|  |F2        |
|-------------|

Im Frame 2 befindet sich ein <div>, welches ich über JavaScript sichtbar und unsichtbar schalten möchte.(Nachbildung einer ComboBox)
...
<input style="width=120" value="Vorstand" id="ORGAN1" name="ORGAN1" maxlength="20" type="TEXT">
<a href="javascript:showDD('ORGAN1')"><img width="18" src="open_dd.gif" height="20" align="absmiddle"></a><br>
<div class="dd" id="DD_ORGAN1" name="DD_ORGAN1" style="width=120">
   <a class="dd" href="javascript:" onClick="setDDData('ORGAN1','Aufsichtsrat')" >Vorstand</a><br>
   <a class="dd" href="javascript:" onClick="setDDData('ORGAN1','Aufsichtsrat')">Aufsichtsrat</a>
</div>
...

JavaScript aus einer Datei:
function showDD(name)
{
 document.all["DD_"+ name].style.visibility="visible";
}

function setDDData(targetField, value)
{
alert(targetField);
  document.all[targetField].value = value;
  hideDD(document.all["DD_"+ targetField].id);
}

function hideDD(name)
{
  document.all[name].style.visibility="hidden";
}

function hideAllDD()
{
  for(i = 0; i < document.all.length; i++)
  {
    if(document.all[i].id.substr(0,3)=='DD_')
    {
      hideDD(document.all[i].id);
    }
  }
}

Das Problem ist nur, dass wenn ich die showDD Funktion aufrufe, ich die Fehlermeldung "document.all[] ist null oder kein Object" bekomme.
Die Funktion hideDD beinhaltet ja die gleiche syntax und funktioniert, so wie ich sie jetzt aufrufe, ohne Probleme. Rufe ich hideDD statt showDD auf, bekomme ich den gleichen Fehler!
Speche ich das Feld in showDD über document.f1.f2.organ1 an so bekomme ich keinen Fehler. Möchte ich aber nicht tun, da die Funktionen unabhängig sein sollen.
Kann mir jemand sagen wo das Problem liegt. Das script muss nur auf dem IE5.5 laufen.

Vielen Dank
Claudia

  1. hi

    JavaScript aus einer Datei:
    function showDD(name)
    {
    document.all["DD_"+ name].style.visibility="visible";
    }

    document.all vergessen wir mal - is besser so ;)
    parent.frames.<iframe-name>.document.getElementById("DD_"+name).style.visibility="visible";

    ...Rest sinngemäß.

    Das script muss nur auf dem IE5.5 laufen.

    muss oder darf? Warum sich das leben schwer machen, nur damit etwas woanders nicht geht ;)

    Grüße aus Lüneburg

    Kai

    1. Hallo

      parent.frames.<iframe-name>.document.getElementById

      Das war die Lösung!!

      Vielen Dank
      Claudia