Archiv verlassen und diese Seite im Standarddesign anzeigen : onMouseOver geht nicht richtig
Dario_PHP 07-06-2010, 17:45 Hallo zusammen,
ich habe eine Intranetseite mit PHP programmiert, die auf eine MySql-Datenbank zugreift.
Sobald ich mit dem mysql_fetch_row mir das Ergebnis in einer Tabelle auflisten lasse, möchte ich, wenn ich über einen Eintrag gehe, mir das entsprechendes Bild angezeigen lassen,dass sich im Pfad x befindet.
Soweit funktioniert auch alles, aber leider wird immer nur das Bild zum erste Ergebnis angezeigt bzw. es wird immer nur der Pfad vom ersten Ergebnis in meine Funktion übergeben, egal über welche Zeile sich der Mauszeiger befindet.
Der PHP-Teil ist folgendermaßen:
$result = mysql_query($querytext);
while(list($nachname,$vorname,$AMT,$Durchwahl,$Fax,$bild) = mysql_fetch_row ($result)){
//$bild ist der Pfad und dieser wird auf jedenfall in jeder Zeile richtig aufgelistet
echo ("<tr>\n");
echo ("<td width='140px' nowrap bgcolor='$color' id='bild' name='bild' value='$bild' onMouseOver='bildaendern();'> $nachname $vorname</td>\n");
echo ("<td width='25px' nowrap bgcolor='$color'>$AMT</td>\n");
echo ("<td width='auto' nowrap bgcolor='$color'>$Durchwahl</td>\n");
echo ("<td width='20px' nowrap bgcolor='$color'>$Fax</td>\n");
echo ("</tr>");
}
und der entsprechende Javascriptcode ist wie folgt:
function bildaendern()
{
var bildPfad = document.getElementById('bild').value;
alert(bildPfad); //nur zur Kontrolle
neuWindow = window.open(bildPfad, "neu", "width=150,height=200");
Warum gibt er mir immer nur den Pfad zum ersten Eintrag?
Könnte mir bitte jemand einen Tipp geben?
:{
AmicaNoctis 07-06-2010, 17:57 Hallo,
PHP-Code hat nichts mit dem Problem zu tun und in diesem Unterforum nichts zu suchen. Der JS-Code gehört auch in Code-Tags.
Wenn du das behoben hast, bekommst du deine Antwort.
Gruß,
Amica
Dario_PHP 07-06-2010, 18:04 okay, sobald ich herausgefunden hab wie man das hier verschiebt... oder muss ich das löschen und neu machen?
AmicaNoctis 07-06-2010, 18:07 Ändere den Beitrag und schreib dort genau den Code rein, der im Browser ankommt.
Dario_PHP 07-06-2010, 18:12 keine Ahnung wie ich das hier lösche...
AmicaNoctis 07-06-2010, 18:12 Warum machst du ein neues Thema auf? Du sollst doch nur deinen Beitrag hier bearbeiten und dabei die Forenregeln beachten.
Anderes Thema gelöscht.
keine Ahnung wie ich das hier lösche...
Davon habe ich nichts gesagt. Ich rede von bearbeiten/ändern, löschen ist etwas ganz anderes.
Dario_PHP 07-06-2010, 19:52 Weil du meintest das, dass Thema hier nichts zu suchen hat... mir ist schon klar das, dass kein php thema ist, aber es ist ein javascript problem und ich befinde mich hier im javascript bereich... also kein plan was man von mir will....
AmicaNoctis 07-06-2010, 20:00 Weil du meintest das, dass Thema hier nichts zu suchen hat
Nein, das Thema ist richtig hier und ich hab bemängelt, dass bei clientseitigen Problemen der PHP-Code nichts zu suchen hat und du den HTML-Code posten sollst, den der Client (dein Browser) erhält.
Das sollst du aber nicht neu posten, sondern deinen ersten Beitrag bearbeiten.
Was daran jetzt so schwer sein soll, verstehe ich leider nicht. Ich hoffe, dass ich mich jetzt verständlicher ausgedrückt habe. Wenn ich Glück habe, liest du es jetzt auch richtig, ohne irgendwas reinzuinterpretieren. Dann könnten wir nämlich mit dem eigentlichen Thema weitermachen. ;)
Dario_PHP 07-06-2010, 20:07 Okay... den HTML-Code den der Client bekommt. Welchen genau meinst du jetzt... der Client arbeitet doch mit den HTML-Code den ich hier rein geschrieben hab... bitte etwas genauer...
Ich weiß nicht genau was du meinst?
AmicaNoctis 07-06-2010, 20:12 Okay... den HTML-Code den der Client bekommt. Welchen genau meinst du jetzt...
Lade die Seite im Browser.
Gehe im Menü „Ansicht“ auf „Seitenquelltext anzeigen“ (Firefox) bzw. „Quelle“ (IE).
Das ist der Code, den der Client bekommt. PHP läuft dagegen auf dem Server.
while(list($nachname,$vorname,$AMT,$Durchwahl,$Fax,$bild) = mysql_fetch_row ($result))
{
echo ("<td width='140px' nowrap bgcolor='$color' id='bild' ...\n");
}
und der entsprechende Javascriptcode ist wie folgt:
function bildaendern()
{
var bildPfad = document.getElementById('bild').value;
alert(bildPfad); //nur zur Kontrolle
neuWindow = window.open(bildPfad, "neu", "width=150,height=200");
Warum gibt er mir immer nur den Pfad zum ersten Eintrag?
Könnte mir bitte jemand einen Tipp geben?
:{
Denk doch mal logisch. Eine ID darf pro Seite nur EINMAL(!) verwendet werden. Du dagegen machst das in der Schleife mehrmals. Das kann so nicht funktionieren. Tipp: Schmeiß die ID raus und setz im mouseover z.B. ein
onMouseOver='bildaendern(this.value);'
Und den übergibst du als Paramater an die Funktion.
Peter
PS: Ist value bei td eigentlich erlaubt?
Dario_PHP 07-06-2010, 20:36 <scripttype="text/javascript">
var status = "True";
if ( status == "True")
{
alert(status);
function bildaendern()
{
var bildPfad = document.getElementById('bild').value;
alert(bildPfad);
neuWindow = window.open(bildPfad, "neu", "width=150,height=200");
}
}
else
{
alert("fde");
}
</script>
</head>
<divid="infobzwanzeige">
<tablewidth="920px">
<thead>
<tr>
<thwidth='140px' nowrap >Nachname,<br>Vorname</th>
<thwidth='25px' nowrap >Amt</th>
<thwidth='auto' nowrap >Durch-<br>wahl</th>
<thwidth='20px' nowrap >Fax</th>
<thwidth='auto' nowrap >Cordless</th>
<thwidth='20px' nowrap >Outlook<br>Fax</th>
<thwidth='auto' nowrap >Standort</th>
<thwidth='auto' nowrap >Abteilung</th>
<thwidth='auto' nowrap >Funktion</th>
</tr>
</thead>
<tr>
<tdwidth='140px' nowrapbgcolor='#fefefe' id='bild' name='bild' value='\\XXXXX\XX\XXX\XX\XXX\XXX.jpg' onMouseOver='bildaendern();'> Max Mustermann</td>
<tdwidth='25px' nowrapbgcolor='#fefefe'>9680</td>
<tdwidth='auto' nowrapbgcolor='#fefefe'>1176</td>
<tdwidth='20px' nowrapbgcolor='#fefefe'></td>
<tdwidth='auto' nowrapbgcolor='#fefefe'></td>
<tdwidth='20px' nowrapbgcolor='#fefefe'></td>
<tdwidth='auto' nowrapbgcolor='#fefefe'>099</td>
<tdwidth='auto' nowrapbgcolor='#fefefe'>BSZ Netzwerk/Telefon</td>
<tdwidth='auto' nowrapbgcolor='#fefefe'>Mitarbeiter</td>
</tr>
</table>
</div>
<tablebgcolor="#ffffff" style="border:0px solid #000000;">
<td>
<FORMACTION='index.php' METHOD='post'>
<inputtype="submit" name="aktion" value="Neue Suche" class="submit">
</FORM>
</td>
</table>
</div>
<divid="fuss">
</body>
</html>
Du sollst den Code nicht quietschebunt machen sondern ein nur auf das entsprechende Bild (http://www.php-resource.de/forum/images/editor/html.gif) klicken und den Code darin einfügen.
Peter
Geändert von wahsaga (07-06-2010 um 20:14 Uhr) Grund: Code „entbuntet“ & dafür mit PHP-Tags dargestellt
Und jetzt ist er völlig kaputt :)
@TS:
Wie ich schon vermutete, value gibt es bei td nicht. Alternativ kannst du du so vorgehen:
<td width="140px" nowrap bgcolor="#fefefe"><a id="bild" name="XXX.jpg" onMouseOver="bildaendern();">Max Mustermann</td>
function bildaendern()
{
var bildPfad = document.getElementById('bild').name;
alert(bildPfad);
}
Das ist zwar eine fürchterliche Krücke, aber es funktioniert. Btw: bgcolor ist völlig veraltet und wird nicht mehr verwendet.
Peter
Dario_PHP 07-06-2010, 22:18 Hallo Kropff, ich hab das jetzt mal so probiert wie du es beschrieben hast, aber leider ohne Erfolg... ich hab immer noch das selbe Problem.
Wie sieht dein error_reporting aus? Wie sieht der aktuell erzeugte Quellcode aus? Hast du mal Firebug installiert zur Fehlersuche? Welche Browser verwendest du? Informationen, Informationen, Informationen! Ohne die können wir nur raten!
Peter
Dario_PHP 07-06-2010, 23:01 Ich hab den IE und Mozilla, beide machen das selbe. Error-Reporting sagt mir nichts, aber ich hab keinen Fehler den er mir anzeigt. Firebug sagt mir auch nichts.
Der Quellcode sieht wie folgt aus:
<script type="text/javascript">
var status = "True";
if ( status == "True")
{
alert(status);
function bildaendern()
{
var bildPfad = document.getElementById('bild').name;
alert(bildPfad);
neuWindow = window.open(bildPfad, "neu", "width=150,height=200");
}
}
else
{
alert("fde");
}
</script>
<td width='140px' nowrap bgcolor='#fefefe'><a id='bild' name='\\XXX01.jpg' onMouseOver='bildaendern();'> Max Mustermann</td>
<td width='140px' nowrap bgcolor='#fefefe'><a id='bild' name='\\XXX02.jpg' onMouseOver='bildaendern();'> Max Mustermann</td>
usw.
Also wenn ich das richtig sehe, dann übergibt er immer den passenden Pfad, nur nicht so richtig an die Funktion
<td width='140px' nowrap bgcolor='#fefefe'><a id='bild' name='\\XXX01.jpg' onMouseOver='bildaendern();'> Max Mustermann</td>
<td width='140px' nowrap bgcolor='#fefefe'><a id='bild' name='\\XXX02.jpg' onMouseOver='bildaendern();'> Max Mustermann</td>
Und damit sind wir wieder bei dem schon beschriebenen Problem (http://www.php-resource.de/forum/html-javascript-ajax-und-css/99674-onmouseover-geht-nicht-richtig.html#post641318). Du vergibst eine ID mehrmals, obwohl sie nur EINMAL pro Seite existieren darf! Luke, nutze die Macht! Denke nach. Ich habe dir doch schon gezeigt, wie du mit Parametern arbeiten kannst.
Peter
Dario_PHP 08-06-2010, 08:25 Also du meindst hier diese Variante...
onMouseOver='bildaendern(this.value);'
weil du darauf ja meintest
HTML-Code:
<td width="140px" nowrap bgcolor="#fefefe"><a id="bild" name="XXX.jpg" onMouseOver="bildaendern();">Max Mustermann</td>
PHP-Code:
function bildaendern()
{
var bildPfad = document.getElementById('bild').name;
alert(bildPfad);
}
und hierbei hätte ich ja wieder die ID oder verstehe ich dich falsch?
Dario_PHP 08-06-2010, 09:44 Ich bekomme es einfach nicht hin, wie kann ich die Id pro zeile erhöhen. :dontknow: Bitte um Hilfe
nur ein Beispiel!
<script>
function aendern(aThis)
{
alert(aThis.name);
window.open(aThis.name,"myWindow","width=150,height=200");
}
</script>
<td><a href="#" name="/bild.jpg" onmouseover="aendern(this)">Hilfe ich komm nicht weiter ...</a></td>
Dario_PHP 08-06-2010, 10:19 Danke Wyveres,
damit funktioniert es jetzt... :danke:.
dir is aber schon klar das ich nur zusammengefasst habe was die anderen dir auch schon gesagt haben...
Dario_PHP 08-06-2010, 14:32 manchmal benötigt man ein paar mehr Perspektiven...
Dario_PHP 10-06-2010, 09:55 Hallo nochmal, ich bins.
Ich hab jetzt ein merkwürdiges Problem, sobald ich weitere javascripte hinzufügen, geht mein Bildaufruf nicht mehr.
So wie ich das nachbilden konnte, kann er das bild nicht mehr öffnen mit
window.open(aThis.name, "myWindow", "width=150, height=200");
obwohl der Wert in die funktion übergeben wird... hab ich mit alert überprüft
Sobald ich die neuen javascripte wieder ausschneide, geht es wieder... hat jemand sowas schon gemacht.
Zum Hintergrund, die neu hinzugekommenen Javascripte sind scripte für meine Menüsteuerung.
1. <script type='text/javascript'>function Go(){return}</script>
2. <script type="text/javascript" src="/exmplmenu_var.js"></script>
3. <script type="text/javascript" src="/menu_com.js"></script>
Sobald script 2 oder drei fehlt, wird das bild auch wieder angezeigt...
hat jemand eine Idee
Ich hab jetzt ein merkwürdiges Problem, sobald ich weitere javascripte hinzufügen, geht mein Bildaufruf nicht mehr. [...]
Sobald ich die neuen javascripte wieder ausschneide, geht es wieder...
Dass sich verschiedene JavaScripte in die Quere kommen, ist nicht unüblich. Passiert insb. oft bei Scripten, die ohne Rücksicht auf ihre Umgebung globale Variablen nutzen, anstatt ihre Daten sauber zu kapseln, oder die sich gegenseitig ihre Eventhandler überschreiben.
Vielleicht reicht schon ein Blick in die Fehlerkonsole, um dem Problem auf die Schliche zu kommen - ggf. braucht es aber auch solide JavaScript-Grundlagenkenntnisse, um das ganze entsprechend anpassen zu können.
Dario_PHP 10-06-2010, 19:03 Danke für den Tip, hab es hinbekommen.... war eine falsche Kapselung.
|
|