JavaScriptを介してボタンのクリックで<a>タグのhrefを変更する方法


126

ボタンをクリックしたときにJavascriptを使用してタグのhref属性値を変更する方法<a/>

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

アクセシビリティの方法では、この方法でリンクを使用しないように指示しています。ここ:xkr.us/js/links
無料コンサルティング

回答:


176

がないhref場合、クリックすると現在のページが再読み込みされるため、次のようなものが必要です。

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

または、次のようなスクロールを防止します。

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

またはreturn falseあなたのf1関数で:

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

....または、控えめな方法:

<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();前に追加することをお勧めしますreturn false
應文涛

34

Nick Carverがそこで行ったことは正確ですが、DOMのsetAttributeメソッドを使用するのが最善だと思います。

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

これはコードの1行の追加ですが、構造的にはより優れています。


8
IMOここでは必要ありません。これは永久にDOMプロパティ.hrefであり、すべてのブラウザーで機能します...たとえば.getAttribute("id")、単に代わりに使用し.idますか?:)
Nick Craver

3
そうです、それは特別なことや異なることは何もせず、単に構造的にです。すべてのDOM関数をこのようにして後でデバッグ/確認できるようにするのが好きです。このメソッドを使用して関数が何をしているのかを簡単に確認できます。明らかにあなたの答えはお金に正解です:)
jakobhans

7

href属性を削除:

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

リンクスタイルが重要な場合:

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

1
<a>なしタグhref属性?何?どうして?
四季竜

1
hrefを除外すると、スタイルと動作が変わります。次に、リンクの代わりにアンカーとして機能します。
Cobra_Fast

1
返信ありがとうありがとうございます。
Chauhan

1
no hrefはそれをアンカーにします、クリックはリンクに変換されます、かなり正常です
無料コンサルティング

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

リンクをクリックすると動的に変化するようにするには:

<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

これが私の見解です。ユーザーが[送信]ボタンを押したときに、テキストボックスから値を収集してURLを作成する必要がありました。

<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

私はその少し古い投稿を知っています。それでも、それは誰かを助けるかもしれません。

タグの代わりに、可能であればこれもできます。

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

これについて何かコメントはありますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.