2011-02-15 13 views
57

tengo alguna maqueta en formato HTMLCómo llamar a la función de JavaScript en lugar de href en HTML

<a href="javascript:ShowOld(2367,146986,2)"><img title="next page" alt="next page" src="/themes/me/img/arrn.png"></a> 

me dio la respuesta del servidor cuando envié la solicitud.

Con esta maqueta obtuve como respuesta la solicitud AJAX que envía mi código al servidor.

Bueno, todo está bien, pero cuando hago clic en el enlace, el navegador quiere abrir la función como enlace; es decir, después de hacer clic veo la barra de direcciones como

javascript:ShowOld(2367,146986,2) 

significa que el navegador que está url si quiero hacer esto en Firebug que es el trabajo. Ahora quiero hacer eso, entonces cuando alguien hace clic en el enlace, el navegador intenta llamar a la función ya cargada en el DOM en lugar de intentar abrirlos en el navegador.

+0

La pregunta similar se responde en Stackoverflow. https://stackoverflow.com/questions/1070760/javascript-function-in-href-vs-onclick/11348403#11348403 –

Respuesta

121

Esa sintaxis debería funcionar correctamente, pero puede probar esta alternativa.

<a href="javascript:void(0);" onclick="ShowOld(2367,146986,2);"> 

o

<a href="javascript:ShowOld(2367,146986,2);"> 
+0

! Muchas gracias –

+0

Sólo ese pequeño ';' ... –

4
href="#" onclick="javascript:ShowOld(2367,146986,2) 
+5

No es la mejor solución como esto saltará a la parte superior de la página. –

6

tratar de hacer su Javascript discreta:

  • se debe utilizar un vínculo real en el atributo href
  • y añadir un oyente de evento de clic para manejar ajax
3

También debe separar el javascript del HTML.
HTML:

<a href="#" id="function-click"><img title="next page" alt="next page" src="/themes/me/img/arrn.png"></a> 

javascript:

myLink = document.getElementById('function-click'); 
myLink.onclick = ShowOld(2367,146986,2); 

Sólo asegúrese de que la última línea de la función ShowOld es:

return false; 

ya que esto detendrá el enlace se abra en el navegador .

8

Si solo tiene como "hacer clic en el controlador de eventos", utilice un <button> en su lugar. Un enlace tiene un significado semántico específico.

Ej:

<button onclick="ShowOld(2367,146986,2)"> 
    <img title="next page" alt="next page" src="/themes/me/img/arrn.png"> 
</button> 
+0

¿Hay alguna manera de hacer que un botón se vea como un enlace en lugar de un botón? –

+0

@Ben Página: Sí, con CSS. Al menos obtienes una buena aproximación. Ver mi respuesta y los comentarios aquí: http://stackoverflow.com/questions/4842953/or-javascriptvoid0/4842962#4842962 –

3

que usar un poco de CSS en un lapso para que se vea como un enlace de este modo:

CSS:

.link { 
    color:blue; 
    text-decoration:underline; 
    cursor:pointer; 
} 

HTML:

<span class="link" onclick="javascript:showWindow('url');">Click Me</span> 

JAVASCRIPT:

function showWindow(url) { 
    window.open(url, "_blank", "directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes"); 
} 
+0

El parámetro de función 'url' anterior me da cadena "url" en lugar de url real – vis

+0

Se supone poner la URL real en la función showWindow. Por ejemplo: javascript: showWindow ('https://stackoverflow.com'); – tolsen64

+0

No puedo codificarlo porque lo estoy creando usando dom y no tengo control sobre la URL – vis

Cuestiones relacionadas