【问题标题】:How to change href of <a> tag on button click through javascript如何通过javascript更改按钮单击时<a>标签的href
【发布时间】:2011-05-20 21:32:42
【问题描述】:

如何在按钮点击时通过Javascript更改&lt;a/&gt;标签的href属性值?

<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

标签: javascript href attr


【解决方案1】:

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

【讨论】:

  • 建议在return false之前添加event &amp;&amp; event.preventDefault &amp;&amp; event.preventDefault();
【解决方案2】:

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

这是额外的一行代码,但在结构方面发现它更好。

【讨论】:

  • IMO 这里不需要,这一直是 DOM 属性,.href 适用于所有浏览器...例如,您会使用 .getAttribute("id") 而不是 .id? :)
  • 你是对的,它没有做任何特别或不同的事情,它只是结构方面的。我喜欢以这种方式拥有我的所有 DOM 函数,以便以后调试/查看:我更容易看到函数使用这些方法做了什么。显然你的答案是正确的:)
  • 谢谢!今天仍然有效!
【解决方案3】:

删除href属性:

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

如果链接样式很重要,那么:

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

【讨论】:

  • 没有href 属性的&lt;a&gt; 标记?什么?为什么?
  • 省略 href 会改变它的风格和行为。然后它充当锚而不是链接。
  • 谢谢你们的回复,你们真的帮了我。
  • 没有href让它成为锚点,点击转化为链接,很正常
【解决方案4】:
<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>

【讨论】:

    【解决方案5】:

    这是我的看法。当用户按下提交按钮时,我需要通过从文本框中收集值来创建 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>

    【讨论】:

      【解决方案6】:

      要让链接在点击时动态更改:

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

      【讨论】:

        【解决方案7】:
        <script type="text/javascript">
          function f1(mHref)
          {
            document.getElementById("abc").href=mHref; 
          }
        </script>
        
        <a href="" id="abc">jhg</a>
        <button onclick="f1("dynamicHref")">Change HREF</button>
        
        Just give the dynamic HREF in Paramters
        

        【讨论】:

          【解决方案8】:

          我知道它有点旧的帖子。不过,它可能会对某些人有所帮助。

          如果可能的话,你也可以这样做,而不是标签。

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

          有这方面的cmet吗?

          【讨论】:

            猜你喜欢
            • 2021-11-16
            • 1970-01-01
            • 2016-04-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-05
            • 1970-01-01
            • 2017-11-14
            相关资源
            最近更新 更多