Cómo hacer que una función JavaScript se ejecute solo al hacer clic en un enlace

gmsegui

Dseda
Desde
10 Sep 2012
Mensajes
1.073
Insertar CODE, HTML o PHP:
<div id="mostrarDiv"><a href="javascript:mostrardiv();" onclick="javascript:pedro();">Mostrar Div</a></div>
<div id="flotante" style="display:none;"> 

<div style="display: none;" class="verify" id="verify">Contenido oculto</div> 
<div style="display: block;" class="adoptim" id="askPws"> 
<form name="counter"> 
Espere por favor... <input type="text" size="1" name="d2" class="countdown" /> Segundos 
</form>


<script type="text/javascript"> 
<!-- 
// 
var milisec=0 
var seconds=15 
var once=0 
document.counter.d2.value="15" 

function pedro(){ 
if ((milisec==0) && (seconds==0) && (once==0)) { 
document.getElementById("verify").style.display="block"; 
document.getElementById("dlb").style.display="block"; 
document.getElementById("askPws").style.display="none"; 
once=1; 
} 
if (milisec<=0){ 
milisec=9 
seconds-=1 
} 
if (seconds<=-1){ 
milisec=0 
seconds+=1 
} 
else 
milisec-=1 
document.counter.d2.value=seconds 
setTimeout("pedro()",100) 
} 
if ((milisec==0) && (seconds==0)) { 
pause(1000); 
pedro(); 
} else { 
pedro(); 
} 
--> 
</script>
</div>

Bueno ese es el codigo, mi problema es que pedro() se ejecuta automaticamente al cargar la pagina, yo quiero que se ejecute cuando hago click en "mostrar div" ... por eso puse el onclick... pero se ejecuta automaticamente..
 

olal28

Gamma
Programador
Verificado por Whatsapp
Desde
8 Dic 2009
Mensajes
432
Si pudieras poner más parte del código. Hasta aquí el debugger solo me avienta un error porque no encuentra el elemento dlb. Y se ejecuta hasta que hago click en el enlace.

Te recomiendo que utilices algo así para agregar eventos.

function addEventHandler(elem,eventType,handler) {
if (elem.addEventListener)
elem.addEventListener (eventType,handler,false);
else if (elem.attachEvent)
elem.attachEvent ('on'+eventType,handler);
}

De esta forma tu código html queda más limpio. ejemplo

var link=document.getElementById("idenlace");
function mifuncion(){
--
}
addEventHandler(link,"click",mifuncion);
ó
addEventHandler(link,"click",function(){
-----
});
 

lombervid

Zeta
Verificación en dos pasos activada
Desde
29 Abr 2011
Mensajes
1.509
Hasta abajo tienes este codigo que llama a pedro():
PHP:
if ((milisec==0) && (seconds==0)) { 
	pause(1000); 
	pedro(); 
	} else { 
	pedro(); 
}

P.D: Quizas lo querias poner dentro de la funcion, pero esta fuera de ella, asi que aunque no le des click se llama a pedro().

Saludos!