frage: Zeitverzögerung

Hallo an alle!

folgendes Problem:

Der Tooltip-Text soll erst nach 5 Sekunden erscheinen, wenn der Benutzer mit der Maus auf "Unser Link" zeigt.
Zeitverzögerung funktioniert bei folgendem Code überhaupt nicht, hat vielleicht jemand eine Idee, was falsch sein könnte?

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<head>
<title>Soso</title>

<div onMouseOver="setTimeOut('showElement(id)', 5000); showElement('2a')" onMouseOut="hideElement()">Unser Link</div>

<style>
.tooltip2 {
 position: absolute;
 display: none;
 background-color: #FFFFFF;
 border-width: 1px;
 border-style: solid;
 border-color: #000000;
 padding: 2px;
}
.tooltip2 .head{
 background-color: #CCCC99;
 color: white;
 font-weight: bold;
 padding: 2px;
}
.tooltip2 .content{
 color: 000066;
 font-size: 10px;
 border-size: 4px;
}

</style>

<div class="tooltip2" id="2a" style="width: 150px;">
 <div class="head"><img src="check.gif" /></div>
 <div class="content"><b>Text</b>
 </div>
</div>

<script type="text/javascript" language="javascript">
function showElement(id) {
 wmtt = document.getElementById(id);
 wmtt.style.display = "block"
}

document.onmousemove = updateElement;

function updateElement(e) {
 x = (document.all) ? window.event.x + document.body.scrollLeft : e.pageX;
 y = (document.all) ? window.event.y + document.body.scrollTop  : e.pageY;
 if (wmtt != null) {
  wmtt.style.left = (x + 10) + "px";
  wmtt.style.top  = (y + 10) + "px";
 }
}

function hideElement() {
 wmtt.style.display = "none";
}
</script>
</body>
</html>

  1. hi,

    Zeitverzögerung funktioniert bei folgendem Code überhaupt nicht, hat vielleicht jemand eine Idee, was falsch sein könnte?

    <div onMouseOver="setTimeOut('showElement(id)', 5000); showElement('2a')"

    deine funktion showElement erwartet als übergabeparameter die ID des zu behandelnden objektes.
    du übergibst ihr im ersten, zeitverzögerten aufruf aber nur ein javascript-objekt mit dem namen id.

    anschließend machst du den aufruf noch mal, und diesmal vermutlich sogar richtig. allerdings findet hier natürlich keine zeitverzögerung statt, weil du die funktion hier ja direkt aufrufst.

    mach dir bitte klar, dass setTimeout keine "warte-funktion" o.ä. ist, die den scriptablauf für eine bestimmte zeitspanne aufhält.
    setTimeout ist eher sowas wie ein eintrag in einen kalender, "erinnere mich daran, in x sekunden das folgende zu tun ..."

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. Danke für Deine Antwort! Wenn ich Dich richtig verstanden habe, sollte dann folgendes funktionieren:

      <div onMouseOver="setTimeOut('showElement('2a')', 5000)" onMouseOut="hideElement()">Unser Link</div>

      oder? Denn damit sage ich ja, "erinnere mich daran, in 5 sekunden die Funktion mit dem Parameter aufzurufen". Funktioniert aber leider nicht :(

      1. hi,

        <div onMouseOver="setTimeOut('showElement('2a')', 5000)"

        du willst setTimeout als ersten parameter einen string übergeben - beendest diesen aber zu früh wieder.

        schau dir bitte http://de.selfhtml.org/javascript/sprache/notationen.htm mal an.

        gruß,
        wahsaga

        --
        "Look, that's why there's rules, understand? So that you _think_ before you break 'em."