Rike HH: Javascript und document.write kollidieren

Hallo an alle!

Ich bin leider nur so ein "Gelegenheits-Webdesigner" - ja, ja, das sind die Schlimmsten - und komme mit einem Problem einfach nicht weiter, egal was ich versuche. Vielleicht kann mich ja jemand auf den richten Weg bringen;-))

Folgende Situation:
Ein schon bestehendes Script (Tabellenlayout) mit separater Javascript-Datei soll ergänzt werden. Im ursprünglichen Zustand befindet sich in einer Zelle der Tabelle eine Aufzählung mehrerer Begriffe. Per Rollover wird ein Bild in einer anderen Zelle jeweils ausgetauscht, bzw. per onClick eine Vergrößerung in einem separaten Fenster geöffnet. Beim Anklicken des Bildes wird ebenfalls unter Auslesen der img-src eine Vergrößerung des jeweiligen Bildes geöffnet. Die Javascript-Funktionen stehen in einer separaten js-Datei, die im Head-Bereich referenziert wird.

Die besagte Aufzählung ist nun bedeutend länger geworden, aus Gründen des Gesamtlayouts soll die Zelle aber nicht größer bzw. länger werden, daher habe ich mir ein Script gesucht (bei dynamicdrive.com: Scrollable content script II), das über ein javascript einen Div-Container in bestimmter Größe auf der Seite ausliest. Über zwei Icons und ein weiteres javascript lässt sich der Inhalt scrollen. Das besagte Script wird direkt im body der HTML-Datei geschrieben, und zwar wie folgt:

<script type="text/javascript">
/******************************************
* Scrollable content script II- © Dynamic Drive (www.dynamicdrive.com)
* Visit http://www.dynamicdrive.com/ for full source code
* This notice must stay intact for use
******************************************/

iens6=document.all||document.getElementById
ns4=document.layers

var speed=2

if (iens6){
document.write('<div id="container" style="position:relative;width:450px;height:213px;border:0px ;overflow:hidden">')
document.write('<div id="content" style="position:absolute;width:450px;left:0;top:0; margin-left:0px">')
}
</script>

Dann der Inhalt der Aufzählung, zum Schluß:

</layer>
</ilayer>
<script type="text/javascript">
if (iens6)
document.write('</div></div>')
</script>

Funktioniert auch ganz prima (obwohl ich leider nicht 100%ig verstehe, was genau das Script tatsächlich macht, bzw. warum zwei Div-Bereiche ausgeschriben werden), nur leider funktionieren sämtliche andere Funktionen aus der separaten js-Datei nicht mehr. Kann das mit dem "document.write" und dann dem Div-Container in dem Script zusammenhängen? Oder mit der Browserweiche für NEtscape? Gibt es da irgendwelche grundlegenden "Unverträglichkeiten" oder ist etwas grundlegend zu beachten, bzw. zu ergänzen im separaten js?
Habe schon alles mögliche versucht, um das Problem genau zu lokalisieren, aber ich komme einfach nicht weiter.

Wäre wie gesagt riesig, wenn mir jemand auf die Spur helfen könnte (sofern ich mich halbwegs verständlich ausgedrückt habe). Den Profis stehen bestimmt die Haare zu Berge über diese "Basteleien", aber irgendwie muss ich es halt hinkriegen. Vielen Dank im Voraus!!!

  1. Hi,

    Die besagte Aufzählung ist nun bedeutend länger geworden, aus Gründen des Gesamtlayouts soll die Zelle aber nicht größer bzw. länger werden, daher habe ich mir ein Script gesucht (bei dynamicdrive.com: Scrollable content script II), das über ein javascript einen Div-Container in bestimmter Größe auf der Seite ausliest. Über zwei Icons und ein weiteres javascript lässt sich der Inhalt scrollen.

    Solche Bastelloesungen, um dem Nutzer bekannte Bedienelemente nachzubilden, sind fast immer Mist.

    Nutze overflow, dann kann der Nutzer mit dem Bedienelement scrollen, das er kennt und dessen Benutzung er gewohnt ist - einem normalen Scrollbalken.

    MfG ChrisB

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. Hi Chris,

      vielen Dank für die schnelle Antwort! Ja, ich weiß ja, dass solche Basteleien eigentlich nur schief gehen können. Aber um trotzdem nochmal auf diesen Konflikt zurückzukommen: gibt es bei document.write + div-Containern etwas ganz generell zu beachten, oder haken da zwei scripte da einfach aus unterfindlichen Gründen?
      Zu den Scrollbalken: kann man den auch am linken Rand des fraglichen Bereiches anordnen (auf die Gefahr hin, dass die Antwort lautet: der Benutzer ist es auf der rechten Seite gewohnt. Wäre aber wirklich mitten auf der Seite..)

      1000 Dank auf jeden Fall!

      Hi,

      Die besagte Aufzählung ist nun bedeutend länger geworden, aus Gründen des Gesamtlayouts soll die Zelle aber nicht größer bzw. länger werden, daher habe ich mir ein Script gesucht (bei dynamicdrive.com: Scrollable content script II), das über ein javascript einen Div-Container in bestimmter Größe auf der Seite ausliest. Über zwei Icons und ein weiteres javascript lässt sich der Inhalt scrollen.

      Solche Bastelloesungen, um dem Nutzer bekannte Bedienelemente nachzubilden, sind fast immer Mist.

      Nutze overflow, dann kann der Nutzer mit dem Bedienelement scrollen, das er kennt und dessen Benutzung er gewohnt ist - einem normalen Scrollbalken.

      MfG ChrisB