Как изменить href тега <a> при нажатии кнопки через javascript


127

Как изменить hrefзначение атрибута <a/>тега через Javascript при нажатии кнопки?

<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
Бесплатная консультация

Ответы:


177

Без a 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

Именно то, что сделал там Ник Карвер, но я думаю, что было бы лучше, если бы он использовал метод DOM setAttribute.

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

Это одна лишняя строка кода, но она лучше структурирована.


8
ИМО, здесь нет необходимости, это всегда было свойством DOM, .hrefработает во всех браузерах ... например, вы бы использовали .getAttribute("id")вместо этого .id? :)
Ник Крейвер

3
Вы правы, в нем нет ничего особенного или особенного, это просто структурно. Мне нравится иметь все мои функции DOM таким образом для последующей отладки / проверки: мне легче увидеть, что функция делает с этими методами. Очевидно, ваш ответ
касается

7

удалить hrefатрибут:

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

если стили ссылок важны, тогда:

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

1
<a>тег без hrefатрибута? что? Зачем?
Shikiryu 06

1
Отсутствие href изменит его стиль и поведение. Затем он действует как якорь вместо ссылки.
Cobra_Fast 06

1
Спасибо за ответ, ребята, вы действительно мне помогли.
Чаухан

1
отсутствие 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>`

Есть комментарии по этому поводу?

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.