molily: Netscape7.1/Mozilla1.4 - onClick im <td>-Tag funktioniert nicht

Beitrag lesen

Hallo Kai Uwe,

<script language="Javascript">

Das type-Attribut fehlt, das language-Attribut ist praktisch überflüssig.

var flag = "news";
var page_marker = 1;

Das gesamte auf JavaScript basierende Sitekonzept sollte meiner Meinung nach komplett überdacht werden - das Menüscript ist nur ein kleiner Teil davon, es hängt mit den Scripten in zahlreichen anderen Dokumenten (z.T. automatisch mit Javascript generiert) zusammen. All diese Scripts bedürfen einer grundlegenden Überarbeitung. Javascript ist kein angemessenes Werkzeug, um clientseitig Dokumente zu generieren.

var item = new Array();
item = button[flag].split("||");

Der item-Array und das Aufsplitten des Strings ist unnötig.

var button = new Array();
button["news"] = "http://www.schildersmilies.de//menu/news.gif||http://www.schildersmilies.de/menu/news_bw.gif||http://www.schildersmilies.de/news.html||||#DDCCBB||";

Man kann auch direkt mit einem Array arbeiten:
button['news']=['menu/news.gif', 'menu/news_bw.gif', 'news.html', '', '#DDCCBB', ''];
button['news'][0] beinhaltet dann »menu/news.gif« usw.

page_marker = 1;

Das page_marker-Konzept habe ich nicht verstanden, es hängt auch zu sehr mit den Unterseiten zusammen.

frames[0].location = (button[id].split("||"))[2];

button[id][2]

Wobei hier bei einigen Menüeinträgen das ominöse Dokument fillFrame.html geladen wird, was vollkommen auf JavaScript aufbaut.

if (navigator.appName == "Netscape") flag = id;

Das kann dann wohl weg.

document.images[flag].src = item[1];

Das ist ok (besser als die Ausgangskonstruktion), button[flag][1] dem obigen Vorschlag folgend.

document.getElementsByTagName('td')[flag].style.backgroundColor = "DEDEDE","true";

Bitte lies in Selfhtml nach, wie getElementsByTagName funktioniert und für was es gut ist. Du suchst offenbar: document.getElementById(flag).style.backgroundColor='#dedede';

if (item[3].length > 0)
      document.getElementsByTagName('td')[item[3]].style.backgroundColor = "DEDEDE","true";

if (button[flag][3].length > 0)
 document.getElementById(button[flag][3]).style.backgroundColor='#dedede';

(Soll heißen: Wenn der Name gesetzt ist, ändere die Hintergrundfarbe der Zelle mit der ID des Namens.)

flag = id;
    item = button[flag].split("||");
        document.images[flag].src = item[0];
    document.getElementsByTagName('td')[flag].style.backgroundColor = item[4],"true";
    if (item[3].length > 0)
      document.getElementsByTagName('td')[item[3]].style.backgroundColor = item[4],"true";

Siehe oben.

function goto(section,page) (...)

Wie gesagt - ich rate dir/euch, die komplette Seite zu überarbeiten, JavaScript nur optional einzusetzen und die Daten serverseitig zu speichern und die Dokumente entsprechend serverseitig zu generieren.

<BODY BGCOLOR="#FFFFFF" TEXT="000000" ALINK="#FF00FF" LINK="#0000ff" VLINK="#FF0000">
<center><img SRC="http://www.schildersmilies.de/banner/banner_schildersmilies.gif" alt="" border=0></center>

Solche Formatierungen können einfacher über CSS gelöst werden. Effizienter CSS heißt zudem, die Formatierungen auszulagern - wenn möglich global (verallgemeinernd) und zentral (in einem externen/separaten Style Sheet).

<table style="margin-top:2;border:solid 1 #555555;">

Besser ausgelagerte Styles, außerdem fehlen bei den numerischen Werten die Einheiten (px!). »#555555« abgekürzt: »#555«.

<colgroup>
     <col width="5%" span="5">
     <col width="5%" span="2">
     <col width="5%" span="5">
   </colgroup>

Welchen Sinn hat das denn?

<tr align="center" bgcolor="#DEDEDE">
     <td id = "LongTom" onClick="menu('lt_public')" colspan=4><img src="http://www.schildersmilies.de/menu/longtom_txt.gif" alt="Long Tom"></td>

»id="LongTom"« - es dürfen keine Leerzeichen zwischen Attributname, Gleichheitszeichen und Attributwert auftauchen! Dieser Fehler tritt mehrfach auf und muss unbedingt korrigiert werden.

<iframe style="border:solid 1 #555555;border-top-style:none;" frameborder=0 width="100%" height="75%" src="news.html">

Die Einheit px fehlt wieder.

Immerhin ist das iframe-Element gefüllt.

Hat jemand eine Ahnung, warum dass im aktuellen NS/Moz nicht funktioniert?

Das hat zahlreiche Gründe.

Ich weis nicht mehr weiter.

Für die weitere Arbeit: Schaue dir die Fehlermeldungen in der JavaScript-Konsole an. http://glasgoogle.de/

Ein allgemeiner Hinweis: Auf der Seite treten schwerwiegende Markup- und CSS-Fehler auf und das technische Gesamtkonzept ist extrem fehlerhaft und problembehaftet. JavaScripts werden für Aufgaben genutzt, welche anders gelöst werden sollten, die meisten Scripts sind ineffizient (überladen) und inkompatibel (das weißt du). Daher mein Rat zum »Relaunch«. Die Markup- und CSS-Fehler müssen ausgebügelt werden, bevor überhaupt JavaScript ins Spiel gebracht wird, dabei helfen dir die Validatoren http://validator.w3.org/ und http://jigsaw.w3.org/css-validator/.

Grüße,
Mathias

--
<img src="http://validator.w3.org/images/vh20" border="0" alt="">