Come cambiare href di <a> tag sul pulsante fare clic su JavaScript


127

Come modificare il hrefvalore dell'attributo di un <a/>tag tramite Javascript sul clic sul pulsante?

<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>

La Via dell'Accessibilità impone di non utilizzare i collegamenti in questo modo. Qui: xkr.us/js/links
Consulenza gratuita il

Risposte:


177

Senza avere un href, il clic ricaricherà la pagina corrente, quindi hai bisogno di qualcosa del genere:

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

O impedire lo scorrimento in questo modo:

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

O return falsenella tua f1funzione e:

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

.... o, in modo discreto:

<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>

suggerisci di aggiungere event && event.preventDefault && event.preventDefault();primareturn false
袁文涛

34

Esattamente quello che Nick Carver ha fatto lì, ma penso che sarebbe meglio se usato il metodo DOM setAttribute.

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

È una riga di codice aggiuntiva, ma la trova meglio dal punto di vista della struttura.


8
IMO non è necessario qui, questa è stata una proprietà DOM per sempre, .hreffunziona in tutti i browser ... ad esempio useresti .getAttribute("id")invece di solo .id? :)
Nick Craver

3
Hai ragione, non fa nulla di speciale o diverso, è solo strutturale. Mi piace avere tutte le mie funzioni DOM in questo modo per il debug / la revisione successiva: è più facile per me vedere cosa sta facendo la funzione con questi metodi. Ovviamente la tua risposta è giusta per i soldi :)
Jakobhans

7

rimuovi hrefattributo:

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

se gli stili di collegamento sono importanti, allora:

<a href="javascript:void(f1())">jhhghj</a>

1
un <a>tag senza hrefattributo? che cosa? perché?
Shikiryu,

1
Lasciare fuori l'href cambierà stile e comportamento. Quindi funge da ancoraggio anziché come collegamento.
Cobra_Fast,

1
Grazie per la risposta, mi state davvero aiutando.
Chauhan,

1
no href lo rende un punto di ancoraggio, il clic si converte in un collegamento, abbastanza normale
Consulenza gratuita il

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>

0

Per fare in modo che un collegamento cambi dinamicamente facendo clic su di esso:

<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>

0

Ecco la mia opinione su di esso. Avevo bisogno di creare un URL raccogliendo il valore da una casella di testo, quando l'utente preme un pulsante Invia.

<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>


-1

Conosco il suo post un po 'vecchio. Tuttavia, potrebbe aiutare qualcuno.

Invece di tag, se possibile, puoi farlo anche tu.

 <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>`

Qualche commento su questo?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.