ссылка html, назначение href из функции Javascript - PullRequest
6 голосов
/ 04 августа 2011

У меня есть простая функция Javascript, которая создает URL-адрес, на который я хочу предоставить ссылку.

Однако я не могу заставить работать тег с привязкой.Как мне присвоить href тега привязки результаты функции Javascript?

Ни одна из этих функций не работает правильно:

<a href="getUrl();">Click here</a>
<a href="javascript:getUrl();">Click here</a>

Это то, чего я хочу достичь.

Ответы [ 6 ]

11 голосов
/ 04 августа 2011
<script type="text/javascript">
    function getUrl()
    {
        return "http://www.google.com";
    }
</script>
<a href="javascript:document.location.href=getUrl();">Click here</a>

- обновление -

Если бы я хотел включить комментарии пользователя 278064, я бы изменил вышеприведенное в:

  <script type="text/javascript">
        function getUrl()
        {
            return "http://www.google.com";
        }
    </script>
    <a href="#" onClick="document.location.href=getUrl();">Click here</a>
1 голос
/ 17 апреля 2015

Ни одно из вышеперечисленных решений не помогло мне.Хорошим способом было бы создать новую ссылку в функции.

function fetchURL() {
  var title = "Download";
  var URL = title.link("https://www.google.com");
  document.getElementById("dynamicButton").innerHTML = URL;

}
<body onload="fetchURL()">
  <div id="dynamicButton">
    //empty
  </div>
0 голосов
/ 06 августа 2017

у меня сработало следующее

<script type="text/javascript">
   $(function() {
        document.getElementById("aTag").href = getUrl();
   });
</script>

<a id="aTag">Click Here</a>
0 голосов
/ 04 августа 2011
function getUrl(that) {
   return "www.whateveryouwant.com";
}

// Point the a.href attribute at your url.
var a = document.getElementsByTagName('a')[0];
a.href = getUrl();

ОБНОВЛЕНИЕ

Я предполагаю, что вы хотите использовать метод getUrl() для установки атрибута href, поскольку, вероятно, указанный URL-адрес не является статическим (поэтому он может измениться)в любой момент вы можете указать на возвращаемую ссылку getUrl ().

В любом случае, вы можете назначить атрибут href, когда пользователь нажимает на ссылку, таким образом.

function changeHref(aElem) {
   aElem.href = getUrl();
}

После полного кода:

<a href="#" onclick="changeHref(this);">click me!</a>

<script>
   function getUrl(that) {
      return "www.whateveryouwant.com";
   }

   function changeHref(aElem) {
      aElem.href = getUrl();
   }
</script>

Еще одна вещь.Вам следует избегать использования javascript: pseudo-protocol.

Этот фрагмент объяснит вам, почему:

Псевдопротокол является нестандартным подходом к этой идее.Предполагается, что псевдопротокол javascript: используется для вызова JavaScript из ссылки.Вот как псевдопротокол javascript: будет использоваться для вызова функции popUp:

<a href="javascript:popUp('http://www.example.com/');">Example</a>

Это будет прекрасно работать в браузерах, которые понимают псевдопротокол javascript :.Однако старые браузеры будут пытаться перейти по ссылке и потерпят неудачу.Даже в браузерах, которые понимают псевдопротокол, ссылка становится бесполезной, если JavaScript отключен.Короче говоря, использование псевдопротокола javascript: обычно является очень плохим способом ссылки на JavaScript из вашей разметки.

Сценарии DOM: веб-дизайн с JavaScript и объектная модель документа: втораяEdition

0 голосов
/ 04 августа 2011

Дайте ссылку id:

<a id="specialLink">Click Here</a>

Позже установите его href из JavaScript:

document.getElementById('specialLink').href = getUrl();

(Возможно, вы захотите включить заполнитель href в ссылку, которую увидят люди с отключенным JavaScript.)

0 голосов
/ 04 августа 2011
<a onclick="getUrl();" href="#">Click here</a>

Нажмите здесь

...