Bagaimana mengubah tag href <a> pada klik tombol melalui javascript

127

Bagaimana cara mengubah nilai hrefatribut sebuah <a/>tag melalui Javascript pada klik tombol?

<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
sumber
Cara Aksesibilitas mengharuskan untuk tidak menggunakan tautan dengan cara ini. Di sini: xkr.us/js/links
Konsultasi Gratis

Jawaban:

177

Tanpa memiliki href, klik akan memuat ulang halaman saat ini, jadi Anda memerlukan sesuatu seperti ini:

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

Atau cegah scroll seperti ini:

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

Atau return falsedalam f1fungsi Anda dan:

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

.... atau, dengan cara yang tidak mengganggu:

<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
sumber
sarankan tambahkan event && event.preventDefault && event.preventDefault();sebelumreturn false
袁文涛
34

Persis seperti apa yang dilakukan Nick Carver di sana, tetapi saya pikir akan lebih baik jika menggunakan metode setAttribute DOM.

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

Ini adalah satu baris kode tambahan tetapi menurut strukturnya lebih baik.

jakobhans
sumber
8
IMO tidak perlu di sini, ini telah menjadi properti DOM selamanya, .hrefberfungsi di semua browser ... misalnya, apakah Anda akan menggunakan, .getAttribute("id")bukan hanya .id? :)
Nick Craver
3
Anda benar, itu tidak melakukan sesuatu yang istimewa atau berbeda, itu hanya dari segi struktural. Saya suka memiliki semua fungsi DOM saya dengan cara ini untuk debugging / review nanti: Lebih mudah bagi saya untuk melihat apa yang dilakukan fungsi dengan metode ini. Jelas jawaban Anda benar :)
jakobhans
7

hapus hrefatribut:

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

jika gaya tautan penting maka:

<a href="javascript:void(f1())">jhhghj</a>
atlavis
sumber
1
sebuah <a>tag tanpa hrefatribut? apa? Mengapa?
Shikiryu
1
Meninggalkan href akan mengubah gaya dan perilakunya. Ini kemudian bertindak sebagai jangkar, bukan tautan.
Cobra_Fast
1
Terima kasih atas balasan kalian sangat membantu saya.
Chauhan
1
tidak ada href yang menjadikannya jangkar, klik mengkonversi ke tautan, cukup normal
Konsultasi Gratis
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>
pengguna3325593
sumber
0

Agar tautan berubah secara dinamis saat mengekliknya:

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

Ini pendapat saya. Saya perlu membuat URL dengan mengumpulkan nilai dari kotak teks, saat pengguna menekan tombol Kirim.

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

Saya tahu postingannya yang agak lama. Tetap saja, itu mungkin membantu seseorang.

Alih-alih memberi tag, jika memungkinkan Anda juga bisa melakukannya.

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

Ada komentar tentang ini?

4u.Ans
sumber