2011-08-04 33 views
6

Tengo una función JavaScript simple que crea una URL a la que deseo proporcionar un enlace.enlace html, href asignación de una función de Javascript

Sin embargo, parece que no puedo obtener la etiqueta de anclaje trabajando con ella. ¿Cómo asigno el href de la etiqueta de anclaje a los resultados de la función Javascript?

Ninguno de éstos funcionan correctamente:

<a href="getUrl();">Click here</a> 
<a href="javascript:getUrl();">Click here</a> 

Esto es lo que quiero lograr.

Respuesta

11
<script type="text/javascript"> 
    function getUrl() 
    { 
     return "http://www.google.com"; 
    } 
</script> 
<a href="javascript:document.location.href=getUrl();">Click here</a> 

- Actualización -

Si quería incorporar las observaciones user278064s', que cambiaría lo anterior en:

<script type="text/javascript"> 
     function getUrl() 
     { 
      return "http://www.google.com"; 
     } 
    </script> 
    <a href="#" onClick="document.location.href=getUrl();">Click here</a> 
+0

Gracias micha, ¡esto funciona como lo necesito! – Mike

+0

es uno de estos considerados como una mejor práctica? –

+0

@ miss.serena: Ninguno ganaría un concurso de belleza, pero el segundo se consideraría mejor en el pasado. Porque mantiene su barra de estado más limpia, sin recurrir al código 'onMouseOver' /' onMouseOut' que reescribe la barra de estado. Pero, ¿quién utiliza la barra de estado de todos modos en estos días? ;) – micha

0
<a onclick="getUrl();" href="#">Click here</a> 

Click Here

+1

Esto no hace absolutamente nada. – Mike

0

Dale el enlace un id:

<a id="specialLink">Click Here</a> 

Más tarde, establezca su href de JavaScript:

document.getElementById('specialLink').href = getUrl(); 

(Es posible que desee incluir un marcador de posición href en el enlace de la cual las personas con JavaScript desactivado van a ver.)

+0

¿Qué significa 'más adelante'? Cuando se carga la página, quiero que el href de este enlace apunte a la ubicación correcta para que cuando se haga clic en el vínculo, lleve al usuario a donde yo quiero que vaya. Realmente no hay 'más adelante'. – Mike

+0

@Mike "más adelante" solo significa "en cualquier JavaScript que se ejecute después del enlace en la página". Puede ser un archivo JavaScript incluido al final del documento, una función que se ejecuta cuando la página está lista o un bloque '

1

Ninguna de las soluciones anteriores funcionó para mí. Una buena forma sería crear un nuevo enlace en la función.

function fetchURL() { 
 
    var title = "Download"; 
 
    var URL = title.link("https://www.google.com"); 
 
    document.getElementById("dynamicButton").innerHTML = URL; 
 

 
}
<body onload="fetchURL()"> 
 
    <div id="dynamicButton"> 
 
    //empty 
 
    </div>

0

Los siguientes trabajó para mí

<script type="text/javascript"> 
    $(function() { 
     document.getElementById("aTag").href = getUrl(); 
    }); 
</script> 

<a id="aTag">Click Here</a> 
Cuestiones relacionadas