Der Martin: Links mittels onclick erzeugen - was mache ich falsch?

Beitrag lesen

Hallo,

<Disclaimer>
Jaaa, ich weiß, Navigationselemente mit Javascript erzeugen ist pfuibäh, aber was will man machen, wenn die Dinger an möglichst viele Bildschirmauflösungen anzupassen sind und übermorgen Deadline ist?
</Disclaimer>

"eigentlich" ganz einfach: Man gibt deren Größe über CSS relativ an, etwa in %, eventuell auch in em, dann sind sie relativ zur Schriftgröße. Und die Bildschirmauflösung hat nun wirklich nichts damit zu tun; was du meinst, ist allenfalls die Fenstergröße.
Vielleicht möchtest du also die fast fertige Javascript-Variante nur als Provisorium sehen, das dringend noch eine JS-freie Fallback-Lösung braucht, eventuell sogar ein komplettes Redesign.

Was mache ich falsch?

Ich sehe mehrere gemeine Fehler.

var w=screen.width;

Wie schon gesagt: Die Größe des Bildschirms interessiert dich eigentlich nicht, was du suchst, ist höchstens die Fensterbreite (body.offseWidth).

var lnk=document.createAttribute("onClick");

Hier hängst du dem document-Objekt ein Attribut namens onClick an. Erstens meinst du wahrscheinlich gar nicht das  document-Objekt, sondern eins deiner img-Objekte. Zweitens ist die Vorgehensweise mit setAttribute() problematisch, besser ist <objekt>.<eigenschaft>=<wert>.
Drittens wird sich kein Browser der Welt um eine Eigenschaft namens onClick kümmern - du meinst ganz bestimmt onclick. Javascript ist case-sensitive.

lnk.nodeValue="start-d_text.html";

Hier weist du dem onclick-Handler (ich nehme an, den hast du in Wirklichkeit gemeint) den String "start-d_text.html" zu. Und das ist Unsinn. Ein Eventhandler ist eine Javascript-Funktionsreferenz, kein String, der zufällig aussieht wie eine URL.

So long,
 Martin

--
Küssen ist die schönste Methode, eine Frau zum Schweigen zu bringen.