Bildbreite bei anderm Bild gleichen Namens ermitteln
Ruth
- javascript
Hallo, Ihr HTML-Freaks,
ich habe ein Problem: ich ermittle beim onload einer Seite die Breite eines Bildes. Je nach Bildbreite soll anschließend unterschiedliches auf der Seite passieren. Der Clou sollte sein, daß ich anschließend auf dem Server das Bild mit einem anderen überschreiben kann, das eine andere Breite hat. Wenn die Seite das Bild dann neu lädt, hat es eine andere Breite und die Seite wird anders aufgebaut. Und so sieht es aus:
<script language="JavaScript">
<!--
var belegt1;
var belegt_1;
function bildladen()
{
belegt1 = new Image();
belegt1.src = "images/bild_1.gif";
laden_1("images/bild_1.gif");
}
function laden_1(ref)
{
if (belegt1.width <= 0 || belegt1.height <= 0) {
setTimeout("laden_1('" + ref + "');", 500);
} else{
belegt_1 = belegt1.width;
}
}
<body onLoad="bildladen()">
Und damit er den cache auch immer schön leert, habe ich als META Tags genutzt:
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<meta http-equiv="pragma" content="no-cache">
Das Dumme ist jetzt, daß er zwar das neue Bild erkennt und darstellt, daß er aber immer noch die alte Bildbreite auswirft. Ist das nicht merkwürdig? Was habe ich übersehen?
Vielen Dank für Eure Hilfe!
Ruth
Hallo Du JavaScript-Freaks,
[...]
das gepostete Script ist zu klein, um ansatzweise zu verstehen, was dort wo und wie von statten geht. Bitte gib den Link des Dokuments an, damit man sich alles ansehen kann.
Gruß aus Berlin!
eddi
Hallo eddi,
mensch, um 5:20 postest Du, Waaahnsinn, noch auf oder schon wieder ;-)?
Bitte gib den Link des Dokuments an, damit man sich alles ansehen kann.
Kann ich leider nicht, aber ich schreib nochmal was zu dem Problem und kopiere das Script hier mal rein:
Ich liste auf einer Seite Termine auf. Je nachdem, ob der Termin schon belegt ist, erscheint dazu eine Grafik "Bitte anderen Termin wählen". Dazu gibt es im Script hinter dem Termin das image TAG <img src="bild_1.gif">. Je nachdem, ob das Bild dazu aus der Grafik mit dem "Belegt-Text" besteht, oder aus einem spacer.gif sieht der User dann, ob der Termin belegt ist, oder eben nicht. Wenn der User dann auf einen Anmeldebutton klickt, kommt er auf eine Seite mit einem Anmeldeformular. Hier sind wieder die Termine aufgelistet. Wenn er jetzt auf den schon belegten Termin klickt, soll er einen Hinweis bekommen: "Der Termin ist schon belegt". Dazu frage ich mit Javascript beim Laden der Seite die Breite von bild_1.gif ab. Wenn es beiter ist als 2 ( = Breite des spacer.gif), soll der Hinweis kommen, sonst nicht. Soweit die Theorie. In der Praxis ist es so, daß ich zwar die Bilder austauschen kann, und sie mir auf der Terminseite auch korrekt dargestellt werden, auf der Anmeldeseite aber der Width-Wert des Bildes nicht aktualisiert wird. D.h.: Es steht zwar das neue Bild auf dem Server, es wird auch angezeigt, aber bei der Abfrage des Width-Werts bleibt alles beim alten. So, und hier sind die Scripte:
1. Terminseite:
html>
<head>
<title>Termine</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<meta http-equiv="pragma" content="no-cache">
</head>
<body>
<table>
<tr>
<td>Termine Workshop.</td>
</tr>
</table>
<table><tr><td>
<table>
<tr>
<td>
<table>
<tr>
<td><b>Termin:</b></td>
<td><b>Raum:</b></td>
<td><a href="ws_1.htm" target="_self">
<img src="images/ws_anmeld.gif" width="90" height="22" border="0" alt=""></a><br>
<img src="../../images/spacer.gif" width="1" height="6" border="0" alt=""></td>
</tr>
</table>
</td>
</tr>
</table>
<table>
<tr>
<td>01.01.-02.01.2005</td>
<td>Hannover</td>
<td><img src="images/workshop/bild_1.gif" border="0" width="150" height="18"></td>
</tr>
</table>
</td></tr>
</table>
<br>
</body>
</html>
*******************************************
*******************************************
2. Anmeldeseite
<html>
<head>
<title>Anmeldung Workshop</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="cache-control" content="no-cache, must-revalidate">
<meta http-equiv="pragma" content="no-cache">
<script language="JavaScript" src="test.js" type="text/javascript"></script>
<script language="JavaScript">
<!--
var belegt1;
var belegt_1;
function bildladen()
{
belegt1 = new Image();
belegt1.src = "images/workshop/bild_1.gif";
laden_1("images/workshop/bild_1.gif");
}
function laden_1(ref)
{
if (belegt1.width <= 0 || belegt1.height <= 0) {
setTimeout("laden_1('" + ref + "');", 500);
} else{
belegt_1 = belegt1.width;
}
}
//-->
</script>
</head>
<body onLoad="bildladen()">
<!-- Anfang Tabelle individuell je Workshop: -->
<form name="Auswahltermine" action="" method="" target="">
<table width="610" height="" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>Termin</td>
<td>Raum</td>
<td>Wunschtermin</td>
<td>Alternativtermin</td>
</tr>
<tr>
<td>01.01.-02.01.2005</td>
<td>Hannover</td>
<td><input type="Checkbox" name="w_1" value="v" onClick="eintragChecken(name,checked,belegt_1)"></td>
<td><input type="Checkbox" name="a_1" value="v" onClick="eintragChecken(name,checked,belegt_1)"></td>
</tr>
</table>
<!-- Ende Tabelle individuell je Workshop -->
</form>
</body>
</html>
Wenn mit den tables irgendwas nicht stimmt: ich habe das script auf des wesentliche zusammengestrichen. "In Echt" sind die tables o.k.
Vielen Dank schonmal an alle, die die Mühe auf sich nehmen, sich da durchzuwursteln.
Schöne Grüße aus Hannover!
Ruth
Hallo Ruth,
nicht sauer sein, aber Du machst die Meile zu sieben Vierteln!
Die Terminseite ist sicher nicht aus der Luft gefallen, sondern wird sicher von einem Serverscript generiert. Wenn dem so ist, dann baue eine Prüfsequenz ein, die im Belegungsfall eines Termins nicht auf eine Anmeldeseite vereist. Anderfalls (also keine serverseitige Technik) wirt es auch möglich sein einen Link, wie auch die Termine von hand herauszunehmen.
Du schreibst etwas von einem Bild, was auf dem Server verändert wird und dann scheint es mit beinahe so, als gäbe es für viele Termine nur ein Bild?!?
So geht es nicht bitte gib einen Link an, oder präzisiere Dich!
Gruß aus Berlin!
eddi