Como alterar o href da tag <a> no botão, clique no javascript

127

Como alterar o hrefvalor do atributo de uma <a/>tag através do Javascript no botão?

<script type="text/javascript">
  function f1()
  {
    document.getElementById("abc").href="xyz.php"; 
  }
</script>

<a href="" id="abc">jhg</a>
<a href="" id="" onclick="f1()">jhhghj</a>
Chauhan
fonte
A maneira de acessibilidade determina que não use links dessa maneira. Aqui: xkr.us/js/links
Consultoria gratuita

Respostas:

177

Sem ter um href, o clique recarregará a página atual, então você precisa de algo como isto:

<a href="#" onclick="f1()">jhhghj</a>

Ou impeça a rolagem assim:

<a href="#" onclick="f1(); return false;">jhhghj</a>

Ou return falsena sua f1função e:

<a href="#" onclick="return f1();">jhhghj</a>

.... ou, da maneira discreta:

<a href="#" id="abc">jhg</a>
<a href="#" id="myLink">jhhghj</a>

<script type="text/javascript">
  document.getElementById("myLink").onclick = function() {
    document.getElementById("abc").href="xyz.php"; 
    return false;
  };
</script>
Nick Craver
fonte
sugerir adicionar event && event.preventDefault && event.preventDefault();antesreturn false
袁文涛
34

Exatamente o que Nick Carver fez lá, mas acho que seria melhor usar o método DOM setAttribute.

<script type="text/javascript">
   document.getElementById("myLink").onclick = function() {
   var link = document.getElementById("abc");
   link.setAttribute("href", "xyz.php");
   return false;
   }
</script>

É uma linha extra de código, mas acha melhor em termos de estrutura.

jakobhans
fonte
8
Na IMO, não há necessidade aqui, essa é uma propriedade DOM para sempre, .hreffunciona em todos os navegadores ... por exemplo, você usaria em .getAttribute("id")vez de apenas .id? :)
Nick Craver
3
Você está certo, não faz nada de especial ou diferente, é apenas estrutural. Eu gosto de ter todas as minhas funções DOM dessa maneira para depuração / revisão posterior: É mais fácil para mim ver o que a função está fazendo com esses métodos. Obviamente, a sua resposta é certo sobre o dinheiro :)
jakobhans
7

remover hrefatributo:

<a id="" onclick="f1()">jhhghj</a>

se os estilos de link são importantes, então:

<a href="javascript:void(f1())">jhhghj</a>
atlavis
fonte
1
uma <a>tag sem hrefatributo? que? porque?
Shikiryu 6/12/10
1
Deixar de fora o href mudará seu estilo e comportamento. Em seguida, ele atua como uma âncora em vez de um link.
Cobra_Fast
1
Obrigado pela resposta, vocês realmente estão me ajudando.
Chauhan
1
no href torna uma âncora, o clique se converte em um link, bastante normal
Free Consulting
1
<a href="#" id="a" onclick="ChangeHref()">1.Change 2.Go</a>

<script>
function ChangeHref(){
document.getElementById("a").setAttribute("onclick", "location.href='http://religiasatanista.ro'");
}
</script>
user3325593
fonte
0

Para alterar dinamicamente um link ao clicar nele:

<input type="text" id="emailOfBookCustomer" style="direction:RTL;"></input>
        <a 
         onclick="this.href='<%= request.getContextPath() %>/Jahanpay/forwardTo.jsp?handle=<%= handle %>&Email=' + document.getElementById('emailOfBookCustomer').value;" href=''>
    A dynamic link 
            </a>
Mohsen Abasi
fonte
0

Aqui está a minha opinião. Eu precisava criar um URL coletando o valor de uma caixa de texto, quando o usuário pressiona um botão Enviar.

<html>
<body>

Hi everyone

<p id="result"></p>

<textarea cols="40" id="SearchText" rows="2"></textarea>

<button onclick="myFunction()" type="button">Submit!</button>

<script>
function myFunction() {
    var result = document.getElementById("SearchText").value;
	document.getElementById("result").innerHTML = result;
	document.getElementById("abc").href="http://arindam31.pythonanywhere.com/hello/" + result;
}		
</script>


<a href="#" id="abc">abc</a>

</body>
<html>

Arindam Roychowdhury
fonte
-1

Eu conheço seu post antigo. Ainda assim, pode ajudar alguém.

Em vez de tag, se possível, você também pode fazer isso.

 <script type="text/javascript">
        function IsItWorking() {
          // Do your stuff here ...
            alert("YES, It Works...!!!");
        }
    </script>   

    `<asp:HyperLinkID="Link1"NavigateUrl="javascript:IsItWorking();"`            `runat="server">IsItWorking?</asp:HyperLink>`

Algum comentário sobre isso?

4u.Ans
fonte