Javascript ile düğme tıklandığında <a> etiketinin href'i nasıl değiştirilir?


127

Düğme tıklandığında Javascript ile hrefbir <a/>etiketin öznitelik değeri nasıl değiştirilir ?

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

Erişilebilirlik Yolu, bağlantıların bu şekilde kullanılmamasını gerektirir. Burada: xkr.us/js/links
Ücretsiz Danışmanlık

Yanıtlar:


177

Bir hreftıklama olmadan , tıklama mevcut sayfayı yeniden yükleyecektir, bu nedenle şuna ihtiyacınız var:

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

Veya şu şekilde kaydırmayı engelleyin:

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

Ya return falseda içinde f1işlev ve:

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

.... veya göze batmayan yol:

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

event && event.preventDefault && event.preventDefault();önce eklemeyi önerreturn false
袁文涛

34

Tam olarak Nick Carver'ın orada yaptığı gibi ama bence DOM setAttribute yöntemini kullanırsanız en iyisi olurdu.

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

Fazladan bir kod satırı, ancak yapı açısından daha iyi bulun.


8
Burada IMO'ya gerek yok, bu sonsuza kadar bir DOM mülkü olmuştur .href, tüm tarayıcılarda çalışır ... örneğin .getAttribute("id")sadece yerine kullanır mıydınız .id? :)
Nick Craver

3
Haklısın, özel ya da farklı bir şey yapmıyor, sadece yapısal olarak. Tüm DOM işlevlerimin daha sonra hata ayıklama / inceleme için bu şekilde olmasını seviyorum: İşlevin bu yöntemlerle ne yaptığını görmek benim için daha kolay. Açıkçası cevabınız paranın üstünde :)
jakobhans

7

hrefözniteliği kaldır :

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

bağlantı stilleri önemliyse:

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

1
özniteliği <a>olmayan bir etiket href? ne? neden?
Shikiryu

1
Href'i dışarıda bırakmak, stilini ve davranışını değiştirecektir. Daha sonra bağlantı yerine bağlantı görevi görür.
Cobra_Fast

1
Cevabınız için teşekkürler, gerçekten bana yardım ediyorsunuz.
Chauhan

1
hiçbir href onu bir çapa yapmaz, tıklama bir bağlantıya dönüştürülür, oldukça normal
Ücretsiz Danışmanlık

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

Bir bağlantının tıklandığında dinamik olarak değişmesini sağlamak için:

<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

İşte benim görüşüm. Kullanıcı bir Gönder düğmesine bastığında, değeri bir metin kutusundan toplayarak bir URL oluşturmam gerekiyordu.

<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

Onun biraz eski görevini biliyorum. Yine de, birine yardımcı olabilir.

Etiket yerine, mümkünse bunu da yapabilirsiniz.

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

Bununla ilgili yorumunuz var mı?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.