So ändern Sie href von <a> -Tag auf Schaltfläche Klicken Sie durch Javascript

126

Wie ändere ich den hrefAttributwert eines <a/>Tags über Javascript beim Klicken auf die Schaltfläche?

<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
quelle
Die Art der Barrierefreiheit schreibt vor, Links auf diese Weise nicht zu verwenden. Hier: xkr.us/js/links
Kostenlose Beratung

Antworten:

176

Ohne ein hrefwird die aktuelle Seite durch Klicken neu geladen. Sie benötigen also Folgendes:

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

Oder verhindern Sie die Schriftrolle wie folgt:

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

Oder return falsein Ihrer f1Funktion und:

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

.... oder auf unauffällige Weise:

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

Genau das, was Nick Carver dort getan hat, aber ich denke, es wäre am besten, wenn Sie die DOM setAttribute-Methode verwenden.

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

Es ist eine zusätzliche Codezeile, aber strukturell besser.

Jakobhans
quelle
8
IMO gibt es hier keine Notwendigkeit, dies war schon immer eine DOM-Eigenschaft, .hreffunktioniert in allen Browsern ... würden Sie zum Beispiel .getAttribute("id")statt nur verwenden .id? :)
Nick Craver
3
Sie haben Recht, es macht nichts Besonderes oder anderes, es ist nur strukturell. Ich mag es, wenn alle meine DOM-Funktionen für ein späteres Debuggen / Überprüfen auf diese Weise verfügbar sind: Ich kann leichter erkennen, was die Funktion mit diesen Methoden tut. Offensichtlich ist Ihre Antwort richtig auf dem Geld :)
Jakobhans
7

hrefAttribut entfernen :

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

Wenn Linkstile wichtig sind, dann:

<a href="javascript:void(f1())">jhhghj</a>
atlavis
quelle
1
ein <a>Tag ohne hrefAttribut? Was? Warum?
Shikiryu
1
Wenn Sie die href weglassen, ändert sich Stil und Verhalten. Es fungiert dann als Anker anstelle eines Links.
Cobra_Fast
1
Danke für die Antwort, ihr hilft mir wirklich.
Chauhan
1
no href macht es zu einem Anker, Klick konvertiert zu einem Link, ziemlich 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
quelle
0

So ändern Sie einen Link dynamisch, wenn Sie darauf klicken:

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

Hier ist meine Meinung dazu. Ich musste eine URL erstellen, indem ich den Wert aus einem Textfeld sammelte, wenn der Benutzer eine Senden-Schaltfläche drückte.

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

Ich kenne seinen etwas alten Beitrag. Trotzdem könnte es jemandem helfen.

Anstelle von Tags können Sie dies nach Möglichkeit auch tun.

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

Irgendwelche Kommentare dazu?

4u.Ans
quelle