El script falla cuando paso demasiado rápido el ratón por encima, el efecto que da cuando hago eso es que la barra se queda congelada y tiende a querer hacer las dos funciones a la vez a pesar de no estar el ratón encima, tiene un onmouseover y un onmouseout para las dos opciones de crecimiento y decrecimiento.
Estoy buscando algún diferenciador para que no haga las dos opciones al mismo tiempo, sobre esta linea he encontrado que se puede usar onmouseover y onmouseout en el script directamente, pero no entiendo mucho su modo de empleo, he buscado todo el día de ayer por google, pero la información que aparece es compleja o esta poco documentada por lo que me generan demasiadas dudas de "por que" o confusión.
Código:
Bueno, ojala que alguien me pueda ayudar un poco con esto, al menos alguna referencia por la que seguir investigando. <html> <head> <script type="text/javascript"> function tamano(){ // Crea la variable tamano y los punteros de las funciones var tamano = 100; this.avance = fnAvance; this.desavance = fnDesavance; // fnAvance amplia la barra hasta 200 px function fnAvance(){ if (tamano < 200){ var recarga = setTimeout('miTamano.avance()', 0); tamano = tamano + 2; if (tamano > 200){ tamano = 200; } document.getElementById('boton').style.width = tamano; document.getElementById('boton').innerHTML = tamano; } } // fnAvance decrece la barra hasta 100 px function fnDesavance(){ if (tamano > 100){ setTimeout('miTamano.desavance()', 0); tamano = tamano - 2; if (tamano < 100){ tamano = 100; } document.getElementById('boton').style.width = tamano; document.getElementById('boton').innerHTML = tamano; } } } var miTamano = new tamano(); </script> </head> <body> <div id="boton" onmouseover="miTamano.avance();" onmouseout="miTamano.desavance();" style="border-style: solid; width: 100px; height: 20px; border-width:1px;"></div> </body> </html>
Un saludo. ^^