javascript - не могу реализовать генерацию оглавления

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО
#1 9 марта 2018 в 17:56
Не могу реализовать вывод оглавления статьи после первого параграфа (в виджете выводится)


  1.  
  2.  
  3. <script>hljs.initHighlightingOnLoad();</script>
  4. <script type="text/javascript">
  5. $(document).ready(function(){
  6. $("h2").each(function(i,item){
  7. var tag = $(item).get(0).localName;
  8. $(item).attr("id","wow"+i);
  9. $("#category").append('<a class="new'+tag+'" href="#wow'+i+'">'+$(this).text()+'</a></br>');
  10. $(".newh2").css("margin-left",0);
  11. });
  12. });
  13. </script>
  14. <script type="text/javascript">
  15. $(document).ready(function(){
  16. $("p:eq(0)").after('<div id="category"></div>');
  17. });
  18. </script>
  19.  
Оглавление должно выводится в <div id="category"></div> но не выводится, если <div id="category"></div> вынести с <script></script> то оглавление показывается.
Так же не могу реализовать отступ при переходе к элементам, так как шапка фиксирована, то она перекрывает заголовок к которому перешли.

Буду рад помощи или предложениям по реализации
#2 9 марта 2018 в 22:55
Jestik,
В консоли посмотрите. Ни на что не ругается?
#3 9 марта 2018 в 23:05
ругается
  1. Uncaught ReferenceError: hljs is not defined
  2. at post-slug.html:937
вроде переменная не обьявлена, но если сделать так:
  1.  
  2.  
  3. <script>hljs.initHighlightingOnLoad();</script>
  4. <script type="text/javascript">
  5. $(document).ready(function(){
  6. $("h2").each(function(i,item){
  7. var tag = $(item).get(0).localName;
  8. $(item).attr("id","wow"+i);
  9. $("#category").append('<a class="new'+tag+'" href="#wow'+i+'">'+$(this).text()+'</a></br>');
  10. $(".newh2").css("margin-left",0);
  11. });
  12. });
  13. </script>
  14. <div id="category"></div>
  15.  
то все работает, только ж выводится в виджете, а я хочу всунуть после первого абзаца
#4 9 марта 2018 в 23:21
Как-то так надо
  1.  
  2. <script type="text/javascript">
  3. $(document).ready(function(){
  4. $("p:eq(0)").after('<div id="category"></div>');
  5. $("h2").each(function(i,item){
  6. var tag = $(item).get(0).localName;
  7. $(item).attr("id","wow"+i);
  8. $("#category").append('<a class="new'+tag+'" href="#wow'+i+'">'+$(this).text()+'</a></br>');
  9. $(".newh2").css("margin-left",0);
  10. });
  11. });
  12. </script>
#5 9 марта 2018 в 23:33
Jestik,
Давайте попробую в меру своих поверхностных знаний расписать, что в этом коде написано. Более знающие да поправят меня!
  1. <script>hljs.initHighlightingOnLoad();</script> /* Дергаем какую-то функцию initHighlightingOnLoad() объекта hljs без всяких входных данных. Если объекта hljs в памяти браузера нет - ничего работать не будет */
  2. <script type="text/javascript">
  3. $(document).ready(function(){ /* Когда загрузится вся страница */
  4. $("h2").each(function(i,item){ /* На всех заголовках H2 производим какую-то функцию с аргументами i и item */
  5. var tag = $(item).get(0).localName; /* Объявляем переменную tag, которая что-то имеет из локалнейма (я не знаю что такое локалнейм) */
  6. $(item).attr("id","wow"+i); /* Добавляем итему (непонятно, что за итем) атрибут id="wow_дальше номер этой вавы равный i"
  7.   $("#category").append('<a class="new'+tag+'" href="#wow'+i+'">'+$(this).text()+'</a></br>'); /* Дописываем в класс категории ссылку со всей фигней, что дальше*/
  8. $(".newh2").css("margin-left",0); /* Добавляем элементу маргин-лефт 0 */
  9. });
  10. });
  11. </script>
#6 9 марта 2018 в 23:54
Loadырь, danceработает)
С отступом я разобрался.
Спасибо за помощь!
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.