Попытка динамически заменить URL-адрес и значение параметра на основе кнопки <input> - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь динамически заменить значение URL, я использую замену, потому что я не хочу, чтобы значение дублировалось при каждом клике

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

Общая идея, которую я пытаюсь реализовать ниже, состоит в том, что на странице есть несколько URL-адресов, и в каждый момент времени отображается только один.

Я хочу передать местоположение в функцию javascript (это будет число), и эта функция должна взять номер местоположения и заменить раздел во всех href = "" на странице.

Но я не могу заставить его работать.

function getlocation(loc) {
  $('a').each(function() {
    var location = $(this).attr('href');
    $(this).attr('href').replace("&location=100", "&location=loc");
    console.log('error');
  });
}
<a class="button" href="#get.php&location=100">Test</a>
<br>
<br>

<a class="button" href="#get.php&location=100">Test</a>
<br>
<br>


<feildset>
  <input id="mtl" name="location" type="radio" checked>
  <label for="mtl" onclick="getlocation(mtl)">Montreal</label>
  <br>
  <br>
  <input id="frkfrt" name="location" type="radio" onclick="">
  <label for="frkfrt" onclick="getlocation(frkfrt)">Frankfurt</label>



</feildset>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Если я хорошо понимаю, что вам нужно, попробуйте заменить

$(this).attr('href').replace("&location=100", "&location=loc");

на

$(this).attr('href').replace("&location=100", "&location=" + loc);
0 голосов
/ 27 мая 2018
  • frkfrt и mtl не являются переменными - вы хотите передать его как строку .Но встроенные обработчики событий так же плохи, как eval внутри HTML - вместо этого правильно подключите обработчик, используя Javascript, чтобы сделать подобные проблемы менее вероятными.
  • replace не изменяет исходную строку - строки неизменяемы.Вместо этого вам необходимо явно присвоить href s, чтобы изменить их.
  • В getlocation необходимо объединить locпеременная с &location=

['mtl', 'frkfrt'].forEach(loc => {
  document.querySelector(`[for="${loc}"]`).onclick = () => getlocation(loc);
});


function getlocation(loc) {
  document.querySelectorAll('a').forEach(a => {
    a.href = a.href.replace(/&location=.*$/, "&location=" + loc);
  });
}
<a class="button" href="#get.php&location=100">Test</a>
<br>
<br>

<a class="button" href="#get.php&location=100">Test</a>
<br>
<br>


<feildset>
  <input id="mtl" name="location" type="radio" checked>
  <label for="mtl">Montreal</label>
  <br>
  <br>
  <input id="frkfrt" name="location" type="radio">
  <label for="frkfrt">Frankfurt</label>



</feildset>
...