Oliver Dzierzon: Verschachteltes Javascript

Hallo,

brauche Eure Hilfe.

ich habe ein äußeres Javascript, das, nachdem die Seite vollständig geladen wurde (onLoad) aufgerufen wird. Die Funktion besteht darin, die zur Verfügung stehende  Fenstergrösse zu ermitteln (var breite = document.body.offsetWidth;) und anhand dieses Wertes ein Select-Feld zu generieren. Über dieses soll es möglich sein die Breite eines Frames auzuwählen. Dieser Wert soll nun über das  innere Javascript, das durch das äußere generiert wurde an ein anderes document übermittelt werden (document.location = url).

Nun habe ich das Problem, dass äußere javascript  zwar noch einwandfrei fuktioniert, wenn ich aber eine Auswahl im Select-feld treffe, kommt folgende Fehlermeldung:

'document.form1.cols.length' ist Null oder kein Object

Wo liegt mein Fehler, wer kann mir helfen ?

Hier noch mal der ganze Code

<html>
<head>
<title>Frame Generator</title>

<script language="javascript">

//Hier beginnt das äußere Javascript

function neu_aufbau()
{
var script_border = "script";

//var box -> Definition des inneren Javascripts

var box = "<"+script_border+" language='javascript'>\n";
box = box +"function vorschau()\n";
box = box +"{\n";
box = box +"for(i=0;i<document.form1.cols.length;++i)\n";
box = box +"{\n";
box = box +"if(document.form1.cols.options[i].selected == true)\n";
box = box +"{\n";
box = box +"var columns = document.form1.cols.options[i].value;\n";
box = box +"}\n";
box = box +"}\n";
box = box +"url = 'vorschau.html?columns=' + columns;\n";
box = box +"document.location = url;\n";
box = box +"}\n";
box = box +"</"+script_border+">\n";

//Ende der Definition des inneren Javascripts

var hoehe = document.body.offsetWidth;
var col = 0;
var option="";
while(col <= hoehe)
{

option = option + "<option value='"+col+"'>"+col+"</option>\n";
col = col + 15;
}

//Select Field-> onChange soll inneres javascript aufrufen
option = '<select name="cols" onChange="vorschau()">\n'+option+'\n</select>';

//hier beginnt das vom äußeren javascript generierte document
document.write('<html><head><title>Frame Generator</title>\n');

//Generierung des inneren Javascripts
document.write(box+'\n');

document.write('</head>\n');
document.write('<body bgcolor="#ffffff" text="#000000">\n');
document.write('<form name="form1"></form><table border="0" width="800" height="100%" align="center">\n');
document.write('<tr><td align="center"><img src="images/frame1_m.jpg" border="0" width="500" height="374" alt="frameset1"></td></tr>\n');
document.write('<tr><td align="center"><font face="arial" size="3" color="#000000">Cols= '+option+',* px</font></td></tr>\n');
document.write('</table></form>\n');
document.write('</body></html>\n');
}

</script>
</head>

<body bgcolor="#FFFFFF"  text="#000000" onLoad="neu_aufbau();">
</body>
</html>

Das ganzen ist zwar nur ne Spielerei zur Übung, aber es läßt mir trotzdem keine Ruhe.

Vielen dank

Ciao Olli :-)

  1. Hallo,

    alles zurück, falscher Alarm.
    Da brütet man stundenlang vor diesem Problem, sieht den Wald vor lauter Bäumen nicht mehr, um dann, nachdem man das Problem schon ins Forum gepostet hat, doch noch über den Fehler zu stolpern.

    Klar, man sollte doch möglichst ein Fromular, das man eben erst geöffnet hat nicht im nächsten Schritt schon wieder beenden wenn man noch darauf zugreifen möchte. Ich meine damit:

    document.write('<form name="form1"></form><table ....

    ist ja wirklicher Schwachsinn. ;-)
    das kommt nun mal davon, wenn man nur gelegentlich einen HTML-Editor verwendet, der immer auch gleich zu Abschlußtags hinzufügt und man dann auch noch nicht aufpasst.

    Ok dann erst mal Ciao

    Olli :-)