#javascript #url #dynamic
#javascript #url #динамический
Вопрос:
У меня есть вопрос, и мне интересно, возможно ли это. Я хочу динамически добавлять содержимое на HTML-страницу, изменяя идентификатор в URL-адресе.
Я имею в виду, например, я хочу добавить имя человека на веб-страницу:
Сначала моя страница будет: www.mypage.com/index
<p> Hello <span></span> welcome to our page</p>
Результат, который я хочу получить, заключается в написании этого URL: www.mypage.com/index#YourName код обновляется в соответствии с этим:
<p> Hello <span id="YourName">YourName</span> welcome to our page</p>
Таким образом, идентификатор и содержимое диапазона обновляются только путем изменения URL-адреса. Я действительно не знаю, как этого добиться. Интересно, мог бы я динамически присвоить своему span идентификатор, введя его в URL-адресе, а затем получить этот идентификатор и использовать его в качестве значения span.
Комментарии:
1. Значение, когда URL-адрес www.mypage.com/index#HerName содержание будет таким
<p> Hello <span id="HerName">HerName</span> welcome to our page</p>
?2. Это именно то, чего я пытаюсь достичь.
3. Значит, диапазон
id
меняется с помощью хэштега?4. Да! Интересно, возможно ли это?
5. Да, проверьте мой ответ ниже
Ответ №1:
Вы можете получить значение ID из URL-адреса, используя window.location.hash
.
Кроме того, вы можете отслеживать эти изменения с помощью hashchange
события window.
function showHash() {
const newHash = window.location.hash.replace("#", "");
const resultSpan = document.querySelector(".hash-value");
resultSpan.id = newHash;
resultSpan.innerHTML = newHash;
}
window.addEventListener("hashchange", showHash, false);
window.addEventListener("DOMContentLoaded", showHash);
<body>
<div>Current HASH in URL is: <span class="hash-value"></span></div>
<div class="buttons">
<a href="#hash1">hash1</a>
<a href="#hash2">hash2</a>
<a href="#hash3">hash3</a>
</div>
</body>
Комментарии:
1. Спасибо за ваш ответ, но я думаю, что мне следует обновить свой вопрос.
2. Вы тестировали фрагмент локально?
3. prnt.sc/wxj992 Это то, чего вам нужно достичь?
Ответ №2:
Вы можете использовать JavaScript для получения текущей ссылки, такой как:
<script>
let YourLink = window.location.href;
let startingPoint = YourLink.indexOf('#');
let endingPoint = YourLink.indexOf('/'); // In case if the name is not the last thing on your link
let NameYouWant = YourLink.substring(startingPoint, endingPoint);
// So 'NameYouWant' would be the name you need to use
</script>
Если вы используете ‘#’ для начальной точки каждого имени в вашей ссылке, надеюсь, это будет полезно.
Комментарии:
1. Спасибо за ваш ответ, но как я могу использовать это для обновления содержимого моего диапазона?
2. @mscmdaddcts вы присваиваете идентификатор своему диапазону следующим образом:
<span id='mySpan'></span>
а затем добавляете$('#mySpan')[0].innerHTML = NameYouWant;
в свой скрипт, P.S извините за поздний ответ
Ответ №3:
Может быть, вы можете попробовать это
let splits = window.location.href.split("#");
let span = document.getElementsByTagName("p")[0].getElementsByTagName("span")[0];
span.innerText = splits[splits.length - 1];
span.id = splits[splits.length - 1];