Як змінити 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

Не маючи 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 були таким чином для подальшої налагодження / перегляду: Мені простіше зрозуміти, що функція робить з цими методами. Очевидно, ваша відповідь правильна щодо грошей :)
jakobhans

7

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

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

якщо стилі посилань важливі, тоді:

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

1
<a>тег без hrefатрибута? що? чому?
Шикірю

1
Покидання href змінить його стиль та поведінку. Потім він виступає як якір замість ланки.
Cobra_Fast

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.