Hallo,
»»Wenn ich das Script aufrufe, kommt die Fehlermeldung, das prod1 null oder kein objekt ist.
dann wird wohl deine Funktion crossDOM zum Zeitpunkt des Aufrufs null zurückliefern. Falls der Script-Code im Header-Bereich steht, dann kann sie (crossDOM) wohl noch nicht aufs DOM zurgreifen bzw. übers DOM auf die entspr. Elemente, da diese noch nicht zur Verfügung stehen.
Solange uns also nicht bekannt ist wo dein Script-Code steht und wann die einzelnen Funktionen aufgerufen werden, läßt sich zu dem von dir beschriebenen Problem keine schlüssige Aussage treffen.
Ich vermute du rufst die init-Funktion dann auf, wenn die Seite vollständig geladen ist. Zu diesem Zeitpunkt funktioniert crossDOM wahrscheinlich korrekt, wo hingegen bei deiner ursprünglichen Form der Implementierung, die entspr. Elemente noch nicht ermittelt werden können, da die Initialisierung vor der Bereitstellung erfolgt und somit fehlschlagen muss.
...
//Deklaration
var prod1;
var sign1;
var txt1;
//Initialisierung
function init ()
{
prod1 = crossDOM(1,'produkt');
sign1 = crossDOM(1,'signet');
txt1 = crossDOM(1,'text');
prod1.top = 20;
sign1.top = objHeight('produkt') + objTop('produkt');
txt1.top = objHeight('signet') + objTop('signet');
}
...
<body onload="init();">
...
bernd