Jak zmienić href tagu <a> po kliknięciu przycisku przez javascript

127

Jak zmienić hrefwartość atrybutu <a/>tagu poprzez JavaScript po kliknięciu przycisku?

<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
źródło
Droga dostępności nakazuje nie używać linków w ten sposób. Tutaj: xkr.us/js/links
bezpłatne konsultacje

Odpowiedzi:

177

Bez znaku hrefkliknięcie przeładuje bieżącą stronę, więc potrzebujesz czegoś takiego:

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

Lub zapobiegaj przewijaniu w ten sposób:

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

Lub return falsew swojej f1funkcji i:

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

... lub dyskretnie:

<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
źródło
zaproponuj dodaj event && event.preventDefault && event.preventDefault();przedreturn false
袁文涛
34

Dokładnie to, co zrobił tam Nick Carver, ale myślę, że najlepiej byłoby użyć metody DOM setAttribute.

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

To jedna dodatkowa linia kodu, ale znajdź ją lepiej pod względem struktury.

jakobhans
źródło
8
IMO nie ma takiej potrzeby, to była własność DOM od zawsze, .hrefdziała we wszystkich przeglądarkach ... na przykład używałbyś .getAttribute("id")zamiast po prostu .id? :)
Nick Craver
3
Masz rację, to nie robi nic specjalnego ani innego, jest po prostu strukturalne. Lubię mieć wszystkie moje funkcje DOM w ten sposób do późniejszego debugowania / przeglądu: łatwiej jest mi zobaczyć, co robi funkcja z tymi metodami. Oczywiście twoja odpowiedź dotyczy pieniędzy :)
jakobhans
7

usunąć href atrybut:

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

jeśli style linków są ważne, to:

<a href="javascript:void(f1())">jhhghj</a>
atlavis
źródło
1
<a>tag bez hrefatrybutu? co? czemu?
Shikiryu
1
Pozostawienie href zmieni jego styl i zachowanie. Następnie działa jako kotwica zamiast łącza.
Cobra_Fast
1
Dzięki za odpowiedź, naprawdę mi pomóżcie.
Chauhan,
1
brak href sprawia, że ​​jest to kotwica, kliknięcie konwertuje do linku, całkiem normalne
bezpłatne konsultacje
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
źródło
0

Aby łącze zmieniało się dynamicznie po kliknięciu:

<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
źródło
0

Oto moje spojrzenie na to. Musiałem utworzyć adres URL, zbierając wartość z pola tekstowego, gdy użytkownik naciśnie przycisk Prześlij.

<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
źródło
-1

Wiem, że to trochę stary post. Mimo to może komuś pomóc.

Zamiast tagu, jeśli to możliwe, możesz to również zrobić.

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

Jakieś uwagi na ten temat?

4u.Ans
źródło