2011-01-15 17 views
0

/* dies unser Skript für monopoly_first_page.html ist */kann nicht Onmouseover Ereignis debuggen

var result; 
var button; 
var image; 
var x = 0; 

function animation(animatedObject){ 

    var hereObject = animatedObject; 
    alert(hereObject); 

    /*setInterval(animate(animatedObject, x), 100);*/ 

} 

function animate(hereObject, x){ 

     alert(x); 

     if(x == 0){ 
      hereObject.style.width++; 
     } 
     else{ 
      hereObject.style.width--; 
     } 

     if(hereObject.style.width <= 225){ 
      x = 0; 
     } 
     if(hereObject.style.width >= 300){ 
      x = 1; 
     } 
} 

function disanimation(animatedObject){ 

    var hereObject = animatedObject; 
    clearInterval(); 


} 


window.onload = init; 

function init(){ 

    result = document.getElementById("result"); 
    button = document.getElementById("button-container"); 
    document.getElementById("button-container").onmouseclick = animation(button); 
    document.getElementById("button-container").onmouseout = disanimation(button); 
    alert(button); 
    alert(button); 

} 

hallo every one ... dies ist eine meiner Quellcode und ein Anfänger im ... konfrontiert ich ein Problem und es ist, wo ich diese Aussage schrieb:

document.getElementById("button-container").onmouseclick = animation(button); 

, wenn die Funktion init beginnt auch Funktion Animation laufen execetues ... aber ich bin sicher, dass im nicht meine Maus über den angegebenen DIV rollen ... , was ist das Problem?

Antwort

2

Sie müssen eine Funktion an alle Handler übergeben. Was mit Ihrem Code passiert, ist, dass er animation(button) aufruft und dann diesen Wert auf die Eigenschaft onmouseclick setzt. Da die Funktion animation(...) keine Funktion zurückgibt, wird nichts Gutes passieren.

Dies wäre viel näher.

whatever.onmouseclick = animation; 

Wenn Sie möchten, können Sie dies auch: (vorausgesetzt, Sie eine bestimmte Schaltfläche wollen weitergegeben)

+0

Dank ... Ich glaube, ich völlig verstehen, was mein Problem war – saman

0

nur john hinzufügen wollte, können Sie auch tun

document.getElementById("button-container").addEventListener("click",function(){animation(button);},true); 

insetead von "OnMouseClick"

:-)

+0

vielen Dank ... es ist zweckdienliche Antwort – saman

0

Als @JohnFisher bereits erwähnt, weisen Sie dem Ereignis das ERGEBNIS Ihrer Funktion zu. Allerdings verwende ich nur onclick. Woher hast du einen Mausklick? Sie auch Ihre getElementByld wiederholen unnötig und eine init haben, der ein onload ist es so konsolidieren:

window.onload = function() { 
    var button = document.getElementById("button-container"); 
// button is not necessarily known or the same at the time of the click so use (this) 
    button.onclick = function() { animation(this); } 
    button.onmouseout = function() { disanimation(this); } 
} 
Verwandte Themen