2011-04-08 45 views
6

Estoy tratando de hacer una forma de resaltar brevemente el texto en enlaces con nombre, pero solo por unos segundos.JavaScript -Cambio de color CSS durante 5 segundos

<a href="#faq1"onClick="document.getElementById('faq1').style.color='#f00'"> 

Así que en una lista de preguntas frecuentes - Salta a la identificación apropiada, cambia el color a rojo durante unos segundos como una señal visual para el usuario final (la respuesta está aquí). pero luego vuelve al color normal y el intervalo se completa.

¿Cómo hago para que la función anterior funcione solo durante un período de tiempo determinado?

+0

jQuery UI tiene una buena [ Efecto de resaltado] (http: // jqu eryui.com/demos/effect/) (Ver el menú desplegable en la página de demostración). Esto se usa aquí en SO. Sé que agregar jQuery es excesivo para esto, pero tal vez pueda trabajar en el resto de su sitio. Solo un pensamiento. :) –

Respuesta

8

probar esto:

function highlight(obj){ 
    var orig = obj.style.color; 
    obj.style.color = '#f00'; 
    setTimeout(function(){ 
     obj.style.color = orig; 
    }, 5000); 
} 

y en el html:

<a href="#faq1" onClick="highlight(document.getElementById('faq1'));"> 

esta función funcionará para cualquier objeto que le pase :-)

aquí es un violín de trabajo: http://jsfiddle.net/maniator/dG2ks/

+0

adoran la solución y la capacidad de pasar el ID a la función. funciona perfecto para mí ya que tengo 20 preguntas frecuentes. me permite no repetir el código. ¡Gracias! – Chris

+0

@Chris, no hay problema^_^ – Neal

0

Escriba una función para cambiarla de nuevo (estableciendo la misma propiedad en una cadena vacía). Ejecutarlo utilizando setTimeout

3

Puede utilizar window.setTimeout()

<a href="#faq1" onClick="highlight()"> 

<script type="text/javascript"> 
    function highlight() { 
     var el = document.getElementById('faq1'); 
     var original = el.style.color; 
     el.style.color='#f00'; 
     window.setTimeout(function() { el.style.color = original; }, 5000); 
    } 
</script> 
-1
$('#faq1').css('color', '#f00'); 
setTimeout(function() {$('#faq1').css('color', '#000'); }, 5000); 
+0

¿por qué usar jQuery para algo tan trivial, ** y ** la operación no está utilizando jquery que puedo ver – Neal

+0

jQuery es el estándar para la modificación de DOM independiente del navegador. Tan pronto como ingrese a esa área, ¿por qué no hacerlo correctamente? – NKCSS

+0

¿por qué es 'estándar'? no es estándar para todos. hay tantas otras librerías de modificación DOM – Neal

0

Prueba esto:

<a id="faqLink" href="#faq1">FAQ Link</a> 
<script type="text/javascript"> 
document.getElementById('faqLink').onclick = function(e){ 
    e = e || window.event; 
    var srcEl = e.target || e.srcElement; 
    var src = document.getElementById("faq1"); 
    var prevColor = src.style.color; 
    src.style.color = '#f00'; 
    setTimeout(function(){ 
     src.style.color = prevColor; 
    }, 5000); //5 seconds 
} 
</script> 
0

Algunos JS:

<script type='text/javascript'> 
    function changeColor(element, color){ 
     document.getElementById(element).style.color = color 
     setTimeout(function(){ changeColor(element, '#000') }, 5000) 
    } 
</script> 

Algunos HTML:

<a href="#faq1" onClick="changeColor('faq1', '#f00')"> 
+0

que asume que el color original era '# 000' – Neal

+0

¡Esto también termina en un ciclo infinito! – Neal

Cuestiones relacionadas