Расширение скрытого div путем ссылки на якорь с внешней страницы

У меня есть скрипт, который скрывает (display:none) определенные элементы div в списке при загрузке страницы. Содержимое Div представляет собой описание книги, а весь список представляет собой своего рода библиографию. Каждый div имеет идентификатор, например, «div1», «div2» и т. д.

<ul>  
<li><div class="hidden" id="div1"></li>  
<li><div class="hidden" id="div1"></li>   
...  
</ul> 

И есть еще одна страница с меню, которое состоит из привязанных ссылок на каждый такой div:

<ul>  
<li><a href="bibl.html#div1"></li>  
<li><a href="bibl.html#div2"></li>  
...  
</ul>  

Я хочу, чтобы скрытый div автоматически расширялся при нажатии ссылки на другой странице. Я пробовал кое-что из window.location.href, но безрезультатно - мой JS еще слаб. Насколько я понимаю логику, он должен взять текущий URL-адрес и проверить его на «#», а затем найти элемент с частью справа в атрибуте id. Спасибо большое добрые люди)


person certainlyakey    schedule 09.07.2009    source источник


Ответы (3)


Вы можете сделать что-то подобное на целевой странице:

window.onload = function() {
    var hash = window.location.hash; // would be "#div1" or something
    if(hash != "") {
        var id = hash.substr(1); // get rid of #
        document.getElementById(id).style.display = 'block';
    }
};

По сути, вы проверяете при загрузке страницы, имеет ли href окна прикрепленный к нему хеш. Если это так, вы найдете <div> и измените стиль отображения на блок.

person Paolo Bergantino    schedule 09.07.2009
comment
Там. Счастливы сейчас? У тебя есть :) - person Sampson; 09.07.2009
comment
Нет, я не счастлив. Я нахожусь на тропе войны для вопросов по PHP, я НАСТОЛЬКО близок к золоту, я чувствую его запах! :) - person Paolo Bergantino; 09.07.2009
comment
Как упоминалось в ответе ниже, вы можете добавить location.href = '#' + id; в качестве последней строки после изменения стиля, чтобы фактически перейти к этому элементу. - person The Godfather; 15.09.2020

Благодарю вас! Я понял, что вы можете добавить это

location.href = '#' + id;

а также прокручивать страницу до позиции указанного div.

person certainlyakey    schedule 09.07.2009
comment
Разве это не должно делаться автоматически? - person Paolo Bergantino; 09.07.2009
comment
@PaoloBergantino работает только в том случае, если элемент отображался при загрузке страницы. Однако, если мы используем код JS из принятого ответа, вы не получите никакой прокрутки (что имеет смысл, потому что последовательность событий как-то похожа на load page code -> auto-scroll to the hash -> execute JS). Но если вы добавите эту строку в качестве последней строки в функцию из принятого ответа, вы получите ее, как и ожидалось. - person The Godfather; 15.09.2020

Вы можете использовать window.location.hash, чтобы увидеть значение хеша. Оттуда вы можете getElementById(hashValue) показать его.

person peirix    schedule 09.07.2009