Wolfgang: Simples onmouseover/onmouseout eingebettet in php code

Mein Problem ist folgendes: Ich habe eine Liste die aus den abfrageergebnissen einer ini Datei erstellt wird. Der großteil des Scripts ist php basierend und ich  übergebe den teil mit onmouseover/onmouseout als normales HTML an den Browser.
Ich möchte erreichen, das wenn man mit der Maus über einen Tabelleneintrag geht, dazu nähere Informationen angezeigt werden. Mein Problem besteht nun darin das der Text flackert bzw sehr schnell wechselt wenn ich mit der Maus in den Bereich des Feldes in der Tabelle gehe der vom Orginaltext noch abgedeckt wird, vom Infotext aber nichtmehr.

Hier der Code:
while ($ini_array[$i]['DESC'] != "") {
    if ($ini_array[$i][$tos] != "") {
 ?>
 <tr><td><input type='checkbox' name=<?$i?> value=<?$i?> > </td><td><a>
 <?echo $ini_array[$i][$tos]; ?>
 </a></td><td><div><a id="blah"
 onmouseover="this.innerHTML = ' <?echo $ini_array[$i]['INFO'];?> '"
 onmouseout="this.innerHTML = ' <?echo $ini_array[$i]['DESC'];?> '"><?echo $ini_array[$i]['DESC']; ?>
 </a></div></td>
 <td><input type='text' name='Description' size='54%' </td></tr>
 <?

}
    $i++;
}

Hab jetzt paar Stunden in diversen Suchmaschinen und Foren verbracht aber irgendwie kahm ich nicht zu einer Lösung.

Besten Dank im vorraus

  1. Hallo!

    Veraendert sich denn die groesse der Zelle/des Links, so dass ein onMouseOut ausgeloest wird? Schalte das ab. Links kann man mit etwas CSS an ihr Elternelement anpassen. (display:block z.B.)

    Du solltest aber auch bedenken ob es wirklich eine gute Idee ist einen ganzen Zelleninhalt einfach zu tauschen. Was spricht gegen einen Tooltip?

    Welchen Sinn hat das (scheinbar ueberfluessige) div um den Link?

    Aus deinem Code kann man leider nicht erkennen, was genau passiert. Dafuer ist der Schnipsel zu klein. Die eingestreuten php Fragmente machen das nicht besser. Wenn Du ein HTML-/JavsScriptproblem hast, poste doch bitte nur den HTML-/JavaScriptcode; also das, was der Server and den Browser liefert. Oder, wenn moeglich, gib einen Link zur Livebetrachtung.

    Vielleicht haben Dir aber ja auch schon meine Tipps auf die Sprunege geholfen.

  2. So wie du das angehst, funktioniert es nur, wenn der eingeblendete Text eine grössere Fläche als der verdeckte Text hat. Ich mach sowas mit div boxen, denen ich events zuschreibe. Auf jeden Fall hier dein code ein bisschen verändert:

    <?php

    $INFO = 'Alii summum decus in carruchis';
     $DESC ='Alii summum decus in carruchis solito altioribus et ambitioso vestium cultu ponentes sudant sub ponderibus lacernarum, quas in collis insertas cingulis ipsis adnectunt nimia subtegminum ';
     ?>
      <table>
      <tr>
       <td><input type='checkbox' name="name" value="value"></td>

    <td><a>tos</a></td>

    <td><div
       onmouseover="this.innerHTML='<?php echo $DESC;?>'"
        onmouseout="this.innerHTML='<?php echo $INFO;?>'"><?php echo $INFO; ?>><a id="blah"</a>

    </div></td>

    <td><input type='text' name='Description' size='54%' </td>
      </tr>
      </table>

    Mein Problem ist folgendes: Ich habe eine Liste die aus den abfrageergebnissen einer ini Datei erstellt wird. Der großteil des Scripts ist php basierend und ich  übergebe den teil mit onmouseover/onmouseout als normales HTML an den Browser.
    Ich möchte erreichen, das wenn man mit der Maus über einen Tabelleneintrag geht, dazu nähere Informationen angezeigt werden. Mein Problem besteht nun darin das der Text flackert bzw sehr schnell wechselt wenn ich mit der Maus in den Bereich des Feldes in der Tabelle gehe der vom Orginaltext noch abgedeckt wird, vom Infotext aber nichtmehr.

    Hier der Code:
    while ($ini_array[$i]['DESC'] != "") {
        if ($ini_array[$i][$tos] != "") {
    ?>
    <tr><td><input type='checkbox' name=<?$i?> value=<?$i?> > </td><td><a>
    <?echo $ini_array[$i][$tos]; ?>
    </a></td><td><div><a id="blah"
    onmouseover="this.innerHTML = ' <?echo $ini_array[$i]['INFO'];?> '"
    onmouseout="this.innerHTML = ' <?echo $ini_array[$i]['DESC'];?> '"><?echo $ini_array[$i]['DESC']; ?>
    </a></div></td>
    <td><input type='text' name='Description' size='54%' </td></tr>
    <?

    }
        $i++;
    }

    Hab jetzt paar Stunden in diversen Suchmaschinen und Foren verbracht aber irgendwie kahm ich nicht zu einer Lösung.

    Besten Dank im vorraus

    1. Den Ansatz mit dem div Container hatte ich auch schon verfolgt wohl nur etwas anders. Das Problem bei Deinem Script ist, wenn ich $INFO und $DESC austausche so das $DESC der kürzere Text ist, tritt dasselbe flackern wieder auf. Leider kann ich es nicht vermeiden das mal $DESC länger ist und mal $INFO.
      Hab unter http://myblackbox.de/test.php das unten aufgeführte Script abgelegt um es für andere nachvollziehbar zu machen. $DESC und $INFO sind vertauscht da das mein Problem darstellt.
      Zur frage von Steel:

      Veraendert sich denn die groesse der Zelle/des Links, so dass ein onMouseOut ausgeloest wird?

      Die Zellen in der Tabelle sind durch <colgroup> fixiert

      Du solltest aber auch bedenken ob es wirklich eine gute Idee ist einen ganzen Zelleninhalt einfach zu tauschen. Was spricht gegen einen Tooltip?

      Gegen Tooltip spricht eigentlich nix außer das mich das zur Verwendung von JavaScript zwingen würde. Da der Netzwerk Admin des Firmennetzwerkes etwas "anders" ist, möchte ich Ihm keine zusätzlichen "Sicherheitsrisiken" zumuten :)

      So wie du das angehst, funktioniert es nur, wenn der eingeblendete Text eine grössere Fläche als der verdeckte Text hat. Ich mach sowas mit div boxen, denen ich events zuschreibe. Auf jeden Fall hier dein code ein bisschen verändert:

      <?php

      $INFO = 'Alii summum decus in carruchis';
      $DESC ='Alii summum decus in carruchis solito altioribus et ambitioso vestium cultu ponentes sudant sub ponderibus lacernarum, quas in collis insertas cingulis ipsis adnectunt nimia subtegminum ';
      ?>
        <table>
        <tr>
         <td><input type='checkbox' name="name" value="value"></td>

      <td><a>tos</a></td>

      <td><div
         onmouseover="this.innerHTML='<?php echo $DESC;?>'"
          onmouseout="this.innerHTML='<?php echo $INFO;?>'"><?php echo $INFO; ?>><a id="blah"</a>

      </div></td>

      <td><input type='text' name='Description' size='54%' </td>
        </tr>
        </table>

      1. Hi,

        Gegen Tooltip spricht eigentlich nix außer das mich das zur Verwendung von JavaScript zwingen würde.

        Dann mach dir mal klar, was das, was du derzeit benutzt - onmouseover, -out, innerHTML - eigentlich ist ...

        MfG ChrisB

        1. Dann mach dir mal klar, was das, was du derzeit benutzt - onmouseover, -out, innerHTML - eigentlich ist ...

          MfG ChrisB

          Erstmal noch nen schönen Weihnachtsfeiertag an euch.

          Mir ist bewußt das das auch Javascript ist. Der unterschied ist nur das ich bei der suche nach Informationen über Tooltips immer nur auf Scripts gestoßen bin, die die nette Endung .js haben und extra eingebunden werden müssen. Dieses wollte ich vermeiden und fragte aus diesem Grund nach einer Lösung mit onmouseover/onmouseout. Wenn damit keine befriedigende Lösung zu erreichen ist, habe ich auch kein Problem auf alternativen zurückzugreifen.