#javascript
#javascript
Вопрос:
<ul id='nav'>
<script>
var head={{ head | safe }};
for(let key in head){
var str="<li><a id='1' href='#' onclick='MyFunction(" key ");'>" key "
</a></li>";
document.getElementById('nav').innerHTML = str;
}
</script>
</ul>
<script>
function MyFunction(key){
console.log(key)
var vv=document.getElementById(key);
vv.scrollIntoView()
vv.scrollIntoView();
}
</script>
По сути, я пытаюсь создать панель навигации, которая будет направлять пользователя к данному элементу div при нажатии, поэтому, если ключ совпадает с div и link, передавая через него функцию, тогда она будет прокручиваться к определенному элементу div.
и ошибка, которую я получаю, является неперехваченной SyntaxError: отсутствует) после списка аргументов
Комментарии:
1. что
var head={{ head | safe }};
предполагается делать?2. он преобразует словарь python в объект json
Ответ №1:
Кажется, ваш фрагмент содержит шаблоны на стороне сервера ( {{ head | safe }}
).
То, о чем вы просите, может быть сделано с использованием только HTML. Итак, если вы используете шаблоны на стороне сервера, вы могли бы просто отобразить это следующим образом. Но дело в том, что даже если вы визуализируете его с помощью Javascript в своем браузере, вам все равно не нужно использовать scrollIntoView()
. Если у вас есть <a>
элемент, href="#id"
где id
— идентификатор элемента другого элемента на странице, браузер будет прокручивать его.
.spacer {
height: 300px;
background-color: black;
}
<ul id="nav">
<li>
<a href="#entry1">entry1</a>
</li>
<li>
<a href="#entry2">entry2</a>
</li>
<li>
<a href="#entry3">entry3</a>
</li>
</ul>
<div class="spacer"></div>
<div id="entry1">entry1</div>
<div class="spacer"></div>
<div id="entry2">entry2</div>
<div class="spacer"></div>
<div id="entry3">entry3</div>
<div class="spacer"></div>
Комментарии:
1. Подумайте о принятии ответа, если он решил вашу проблему 😉