ReloadedMichi: per jscript onklick ändern!

<html lang="de">  
<head>  
  [code lang=javascript]<script type="text/javascript">function show_container() {  
document.getElementById("haa").onmouseover = "self.location.href='gefunden.html'";  
document.getElementById("haa").value = "7135-5412-1354-2431";  
}  
window.setTimeout("show_container()", 3000);  
</script>

</head>
<body>
<form>
  <p>Code:<br>
  <input name="Code" size="30" value="" id="haa"
 readonly="readonly" onmouseover="" type="text"></p>
</form>
</body>
</html>
[/code]
Kann mir jemand behilflich sein?
Ich will dass sich "gefunden.html" erst nach den 3 sekunden öffnet, wenn man über den Code fährt!
Brauche Hilfe!
LG

  1. Lieber ReloadedMichi,

    ins onmouseover-Attribut notierst Du den Namen der Funktion, die beim Mouse-Event ausgeführt werden soll. In dieser Funktion notierst Du die setTimeout-Anweisung, die ihrerseits eine Funktion nutzt:

    function show_container (el) {  
        el.value = "7135-5412-1354-2431";  
      
        window.setTimeout(  
            // was tun?  
            function () { self.location.href = "gefunden.html" },  
            // wann?  
            3000  
        );  
    }
    
    <input  
        value=""  
        ...  
        onmouseover="show_container(this)"  
    
    >
    
    

    Das "this" sorgt dafür, dass eine Referenz auf das <input>-Element an die Funktion übertragen wird, welche es in der Variable "el" entgegen nimmt. Das hat den Vorteil, dass Du auf document.getElementById("haa") verzichten kannst.

    Den Code habe ich nicht getestet und garantiere für nix. ;-)

    Liebe Grüße,

    Felix Riesterer.

    --
    "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
    1. Der Code funktioniert leider nicht ._.
      Die Website geht nach 3s automatisch weiter. Ich brauchs aber so, dass er sich nur weiterleitet, wenn die 3s vorbei sind UND nach diesen 3sekunden die Maus über den Code gefahren kommt.

      LG

      1. Aloha ;)

        Die Website geht nach 3s automatisch weiter. Ich brauchs aber so, dass er sich nur weiterleitet, wenn die 3s vorbei sind UND nach diesen 3sekunden die Maus über den Code gefahren kommt.

        Warum nicht gleich so? Felix' Code behandelt ein etwas anderes Problem, deine Ursprungsfrage war nicht eindeutig.

        Um dein Codebeispiel nochmal aufzugreifen:

        function show_container() {  
          
            document.getElementById("haa").onmouseover = function() {  
                self.location.href='gefunden.html';  
            }  
          
            document.getElementById("haa").value = "7135-5412-1354-2431";  
        }  
        window.setTimeout("show_container()", 3000);
        

        Das entspricht übrigens im Großen und Ganzen lediglich der Umsetzung von Felix' erstem Satz.

        Grüße,

        RIDER

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
        ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
        1. Aloha ;)

          Das entspricht übrigens im Großen und Ganzen lediglich der Umsetzung von Felix' erstem Satz.

          Ups, verlesen. Dachte da stünde etwas anderes. Dann eben doch ausführlicher:

          Ins onmouseover-Attribut in HTML schreibt man als String ("...") Javascript-Code, der bei Eventauslösung ausgeführt werden soll. In der Javascript-Eigenschaft elm.onmouseover wird die Funktion gespeichert, die bei Auslösen des Events ausgeführt werden soll. Unterschied klar? Die Javascript-Variable darf nicht mit einem Text belegt werden, sondern mit einer Funktion.

          Entschuldige, dass ich dir Unaufmerksamkeit unterstellen wollte ;)

          Grüße,

          RIDER

          --
          Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
          ch:? rl:| br:> n4:? ie:% mo:| va:) js:) de:> zu:) fl:( ss:| ls:[
      2. Lieber ReloadedMichi,

        Der Code funktioniert leider nicht ._.

        doch.

        Die Website geht nach 3s automatisch weiter.

        Siehst Du, dass er funktioniert?

        Ich brauchs aber so, dass er sich nur weiterleitet, wenn die 3s vorbei sind UND nach diesen 3sekunden die Maus über den Code gefahren kommt.

        Warum hast Du das in Deinem Ausgangsposting verheimlicht?

        Wir ändern also unsere Vorgehensweise.

        1.) Wir brauchen eine Variable, die uns sagen kann, ob weitergeleitet werden darf, oder nicht. Soetwas nennt man ein Flag. Dieses kann 3 Sekunden nach dem Laden der Seite von "verboten" auf "erlaubt" verändert werden. Dazu braucht es eine setTimeout-Funktion.

        2.) Wir brauchen das Maus-Ereignis, um eine Funktion auszuführen, die das Flag daraufhin prüft, ob weitergeleitet werden kann, oder nicht. Je nach Erlaubnis wird dann weitergeleitet, oder eben nicht. Dass der User ohne Klick-auf-Link die Seite verlässt, ist allerdings störend! Willst Du das wirklich?

        Jetzt bauen wir eine Funktion, die beim Laden der Seite sofort ausgeführt wird, in die wir alle unsere Wünsche hineinpacken:

        (function () {  
          
            var redirect = false; // unser Flag  
          
            // wenn die Seite fertig geladen hat, tue dies:  
            document.onload = function () {  
          
                var code = document.getElementById("haa");  
          
                // alle Elemente sollten geladen sein, trotzdem prüfen  
                if (code) {  
          
                    /* jetzt bestimmen, was beim Überfahren  
                       mit der Maus gemacht werden soll: */  
                    code.onmouseover = function () {  
          
                        // anzuzeigender Wert setzen  
                        code.value = "7135-5412-1354-2431";  
          
                        /* die Variable "redirect" ist hier bekannt,  
                           das liegt am Geltungsbereich von Variablen  
                           in JavaScript. */  
                        if (redirect) {  
                            // jetzt weiterleiten:  
                            window.location.href = "gefunden.html";  
                        }  
                    };  
                }  
          
                // in drei Sekunden das Flag ändern  
                window.setTimeout(  
                    // diese Funktion ändert das Flag:  
                    function () {  
                        /* die Variable "redirect" ist hier bekannt,  
                           das liegt am Geltungsbereich von Variablen  
                           in JavaScript. */  
                        redirect = true;  
                    },  
                    // drei Sekunden warten  
                    3000  
                );  
            };  
          
        }()); // anonyme Funktion gleich ausführen
        

        Natürlich habe ich obiges schon wieder nicht getestet, aber dann hast Du wenigstens auch etwas selbst getan. ;-)

        Liebe Grüße,

        Felix Riesterer.

        --
        "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)