Передача параметра URL в ссылку href с использованием Javascript - PullRequest
3 голосов
/ 01 марта 2012

У меня есть следующий код, работающий для передачи параметра URL в тег формы:

<script type="text/javascript">
  function getQueryVariable(variable) { 
 var query = window.location.search.substring(1); 
 var vars = query.split("&"); 
 for (var i=0;i<vars.length;i++) { 
 var pair = vars[i].split("="); 
 if (pair[0] == variable) { 
   return pair[1]; 
    }
  }
}
 function onLoad() {
var value = getQueryVariable("ID");
var e = document.getElementById('your-field');
e.value = value;
}
</script>

И ...

<body onload="onLoad()">
 <!-- your form and hidden field goes here -->
 <input type="hidden" name="your-field" id="your-field" />

Как я могу передать то же значение в ссылку HTML, чтобы конечный результат был:

<a href="http://www.mysite.com?source=[ID]" >

Где [ID] - это тот фрагмент кода, который необходим для добавления параметра в ссылку?

Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 01 марта 2012

Вы должны дать идентификатор своей ссылке, например:

<a id="YOUR_ID" href="#" >

И тогда у вас есть два способа решения проблемы: использовать чистый Javascript или jQuery:

Если вы используете jquery, вы можете использовать функцию onLoad и внутри ввести следующее:

var url = "http://www.mysite.com?source=" + value;
$("#YOUR_ID").attr("href",url)

ИЛИ используя чистый JavaScript:

var url = "http://www.mysite.com?source=" + value;
var element = document.getElementById('YOUR_ID');
element.setAttribute("href",url)
1 голос
/ 01 марта 2012

Измените функцию загрузки на эту:

function onLoad() {
   var value = getQueryVariable("ID");
   var e = document.getElementById('your-field');
   e.value = value;

   var url = "http://www.mysite.com?source=" + value;
   var element = document.getElementById('YOUR_<A>_ELEMENT_ID');
   element.setAttribute("href",url)
}

Я использую фрагмент кода, предложенный Жоао Алмейдой, поэтому его пример использования jQuery тоже работает хорошо.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...