Estou criando dinamicamente um hiperlink no código c # por trás do arquivo do asp.net. Preciso chamar uma função JavaScript no clique do cliente. como faço isso?
Estou criando dinamicamente um hiperlink no código c # por trás do arquivo do asp.net. Preciso chamar uma função JavaScript no clique do cliente. como faço isso?
Respostas:
Mais puro ainda, em vez de typical href="#"
ou href="javascript:void"
ou href="whatever"
, acho que isso faz muito mais sentido:
var el = document.getElementById('foo');
el.onclick = showFoo;
function showFoo() {
alert('I am foo!');
return false;
}
<a href="no-javascript.html" title="Get some foo!" id="foo">Show me some foo</a>
Se o Javascript falhar, há algum feedback. Além disso, o comportamento errático (salto de página no caso de href="#"
, visita à mesma página no caso de href=""
) é eliminado.
A resposta mais simples de todas é ...
<a href="javascript:alert('You clicked!')">My link</a>
Ou para responder à pergunta sobre como chamar uma função javascript:
<script type="text/javascript">
function myFunction(myMessage) {
alert(myMessage);
}
</script>
<a href="javascript:myFunction('You clicked!')">My link</a>
Com o parâmetro onclick ...
<a href='http://www.google.com' onclick='myJavaScriptFunction();'>mylink</a>
A resposta JQuery. Como o JavaScript foi inventado para desenvolver JQuery, estou dando um exemplo em JQuery fazendo isso:
<div class="menu">
<a href="http://example.org">Example</a>
<a href="http://foobar.com">Foobar.com</a>
</div>
<script>
jQuery( 'div.menu a' )
.click(function() {
do_the_click( this.href );
return false;
});
// play the funky music white boy
function do_the_click( url )
{
alert( url );
}
</script>
Eu prefiro usar o método onclick em vez do href para hiperlinks javascript. E sempre use alertas para determinar qual valor você tem.
<a href='#' onclick='jsFunction();alert('it works!');'>Link</a>
Também pode ser usado em tags de entrada, por exemplo.
<input type='button' value='Submit' onclick='jsFunction();alert('it works!');'>
Idealmente, eu evitaria gerar links em seu code behind, pois seu código precisará ser recompilado toda vez que você quiser fazer uma alteração na 'marcação' de cada um desses links. Se você tiver que fazer isso, eu não incorporaria suas 'chamadas' de javascript em seu HTML, é uma prática totalmente ruim, sua marcação deve descrever seu documento, não o que ele faz, esse é o trabalho de seu javascript.
Use uma abordagem em que você tenha um id específico para cada elemento (ou classe, se for sua funcionalidade comum) e, em seguida, use o Aprimoramento progressivo para adicionar o (s) manipulador (es) de eventos, algo como:
[c# example only probably not the way you're writing out your js]
Response.Write("<a href=\"/link/for/javascriptDisabled/Browsers.aspx\" id=\"uxAncMyLink\">My Link</a>");
[Javascript]
document.getElementById('uxAncMyLink').onclick = function(e){
// do some stuff here
return false;
}
Dessa forma, seu código não será interrompido para usuários com JS desativado e terá uma separação clara de preocupações.
Espero que seja útil.
<a href="https://stackoverflow.com/link/for/javascriptDisabled/Browsers.aspx" id="uxAncMyLink">My Link</a>
?
Em geral, eu recomendaria usar element.attachEvent (IE) ou element.addEventListener (outros navegadores) em vez de definir o evento onclick diretamente, pois o último substituirá quaisquer manipuladores de eventos existentes para esse elemento.
attachEvent / addEventListening permite que vários manipuladores de eventos sejam criados.
Use o onclick
atributo HTML .
O
onclick
manipulador de eventos captura um evento de clique do botão do mouse dos usuários no elemento ao qual oonclick
atributo é aplicado. Esta ação geralmente resulta em uma chamada para um método de script, como uma função JavaScript [...]
Se você não esperar que a página seja carregada, você não poderá selecionar o elemento por id. Esta solução deve funcionar para qualquer pessoa que tenha problemas para fazer o código executar
<script type="text/javascript">
window.onload = function() {
document.getElementById("delete").onclick = function() {myFunction()};
function myFunction() {
//your code goes here
alert('Alert message here');
}
};
</script>
<a href='#' id='delete'>Delete Document</a>