Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Клик по кнопкам с открытием блоков
Форумы портала PHP.SU » » Вопросы новичков » Клик по кнопкам с открытием блоков

Страниц (1): [1]
 

1. leshiy - 23 Марта, 2020 - 15:18:13 - перейти к сообщению
Есть код на jquery который открывает и закрывает определенные блоки при кликах по кнопкам или вне этих блоков.Помогите переделать его на javascript.
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html><head>
  3. <link href="//leshiy-game.ru/css.css" rel="stylesheet" type="text/css">
  4. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  5. </head>
  6. <body>
  7. <div id="gl-blocl" class="gl"><div class="hv"><div class="hvv"><div class="tab vlr"><div id="b4" class=""><p></p></div><div id="vpr" class="fl">
  8. </div></div><div class="tab vc"></div><div class="tab vlr"><div id="b1" class="sear"><span class="wpo">Поиск</span></div><div id="b2" class="vn"><span class="wcat">Категории</span></div><div id="b3"><p></p></div></div></div></div><div class="vn-g"><div class="vn-n b7"></div></div><div id="h-n"><div class="hvv b7"><div class="h-n-sh"><div class="h-nl"><div class="h-n-v">
  9. <div id="n-str"></div></div></div><div id="col3"><div class="gl3"><div id="r-str"></div></div></div><div gl-cen><div class="h-n-tab"><div class="h-n-v"></div></div></div></div></div></div><div class="misk" id="mpois"><form id="po" class="form-p" action="/search.html" method="post"><input type="text" placeholder="Поиск" name="q" id="who" autocomplete="off" min="3"><button type="submit" name="sub" id="poisk-m">Искать</button></form></div><div id="v-p"></div><div id="kr"><span id="krol" class="4267"></span></div><div class="" id="men1"><ul><li id="b5" class="kn-cat">Категории</li><li id="b6">Сортировать</li><li id="vprm">
  10. </li></ul></div>
  11. <div class="mcat-all b7" id="m-cat"><ui id="categor">
  12. категории
  13. </ui><a href="/categor.html" id="v-cat" class="block">Все категори</a></div>
  14. <div id="fon">
  15.     <div id="sort" class="msor"><ul><b id="n-sort">Сортировать по: </b><li class="desc" id="id">Дате</li><li class="sort" id="view">Популярности</li><li class="sort" id="title">Алфавиту</li><li class="sort" id="prod">Времени</li><li class="sort" id="rating">Рейтингу</li><li class="sort" id="com">Комментариям</li></ul></div></div>
  16. <script>
  17. var rels=[['#b1','.isk'],['#b2','.cat-all'],['#b3','.misk'],['#b4','#men1 ul'],['#b5','.mcat-all'],['#b6','.msor']];var loop=function loop(i){var btn=rels[i][0];var block=rels[i][1];$(btn).click(function()
  18. {if(btn=='#b5'){var cat=document.getElementById("gl-block").className;$.ajax({url:"index.php",type:'POST',data:"v_cat=vc&cat_adr="+cat,success:function(html)
  19. {$("#categor").html(html);}});}$(block).toggle();if($('.isk').css('display')=='block'){document.getElementById('b1').className='sear actkn'}else{document.getElementById('b1').className='sear'}if($('.isk').css('display')=='block'||$('.cat-all').css('display')=='block'||$('.mcat-all').css('display')=='block'||$('.misk').css('display')=='block'||$('#men1 ul').css('display')=='block'||$('.msor').css('display')=='block')
  20. {$('#h-n').hide();}else{$('#h-n').show();}if($('.mcat-all').css('display')=='block'){$('#men1 ul').hide();}});};for(var i=0;i<rels.length;i++){loop(i);}$(document).click(function(event)
  21. {for(var i=0;i<rels.length;i++){var btn=rels[i][0];var block=rels[i][1];var $btn=$(btn);var $block=$(block);if($("#mpois").css("display")=="block")
  22. {$("#who").focus();}if($btn.is(event.target)||$block.is(event.target)||$btn.has(event.target).length||$block.has(event.target).length)continue;var bpois=$("#v-p");var mpois=$('#mpois');if(bpois.css('display')=='block')
  23. {if(!bpois.is(event.target)&&bpois.has(event.target).length===0&&!mpois.is(event.target)&&mpois.has(event.target).length===0){bpois.hide();mpois.hide();}}else{$(block).hide();}if($('.cat-all').css('display')=='block'){if(document.getElementById('b2'))
  24. {document.getElementById('b2').className='vvr actkn'}}else{if(document.getElementById('b2')){document.getElementById('b2').className='vn'}}if($('.isk').css('display')=='block'){if(document.getElementById('b2'))
  25. {document.getElementById('b1').className='sear actkn'}}else{if(document.getElementById('b2'))
  26. {document.getElementById('b1').className='sear'}}if($('.isk').css('display')=='block'||$('.cat-all').css('display')=='block'||$('.mcat-all').css('display')=='block'||$('.misk').css('display')=='block'||$('#men1 ul').css('display')=='block'||$('.msor').css('display')=='block'){$('#h-n').hide();}else{$('#h-n').show();}}});
  27.    </script>
  28. </body></html>
2. Vladimir Kheifets - 23 Марта, 2020 - 17:26:32 - перейти к сообщению
leshiy пишет:
Есть код на jquery который открывает и закрывает определенные блоки при кликах по кнопкам или вне этих блоков.Помогите переделать его на javascript.
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <html><head>
  3. <link href="//leshiy-game.ru/css.css" rel="stylesheet" type="text/css">
  4. <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  5. </head>
  6. <body>
  7. <div id="gl-blocl" class="gl"><div class="hv"><div class="hvv"><div class="tab vlr"><div id="b4" class=""><p></p></div><div id="vpr" class="fl">
  8. </div></div><div class="tab vc"></div><div class="tab vlr"><div id="b1" class="sear"><span class="wpo">Поиск</span></div><div id="b2" class="vn"><span class="wcat">Категории</span></div><div id="b3"><p></p></div></div></div></div><div class="vn-g"><div class="vn-n b7"></div></div><div id="h-n"><div class="hvv b7"><div class="h-n-sh"><div class="h-nl"><div class="h-n-v">
  9. <div id="n-str"></div></div></div><div id="col3"><div class="gl3"><div id="r-str"></div></div></div><div gl-cen><div class="h-n-tab"><div class="h-n-v"></div></div></div></div></div></div><div class="misk" id="mpois"><form id="po" class="form-p" action="/search.html" method="post"><input type="text" placeholder="Поиск" name="q" id="who" autocomplete="off" min="3"><button type="submit" name="sub" id="poisk-m">Искать</button></form></div><div id="v-p"></div><div id="kr"><span id="krol" class="4267"></span></div><div class="" id="men1"><ul><li id="b5" class="kn-cat">Категории</li><li id="b6">Сортировать</li><li id="vprm">
  10. </li></ul></div>
  11. <div class="mcat-all b7" id="m-cat"><ui id="categor">
  12. категории
  13. </ui><a href="/categor.html" id="v-cat" class="block">Все категори</a></div>
  14. <div id="fon">
  15.     <div id="sort" class="msor"><ul><b id="n-sort">Сортировать по: </b><li class="desc" id="id">Дате</li><li class="sort" id="view">Популярности</li><li class="sort" id="title">Алфавиту</li><li class="sort" id="prod">Времени</li><li class="sort" id="rating">Рейтингу</li><li class="sort" id="com">Комментариям</li></ul></div></div>
  16. <script>
  17. var rels=[['#b1','.isk'],['#b2','.cat-all'],['#b3','.misk'],['#b4','#men1 ul'],['#b5','.mcat-all'],['#b6','.msor']];var loop=function loop(i){var btn=rels[i][0];var block=rels[i][1];$(btn).click(function()
  18. {if(btn=='#b5'){var cat=document.getElementById("gl-block").className;$.ajax({url:"index.php",type:'POST',data:"v_cat=vc&cat_adr="+cat,success:function(html)
  19. {$("#categor").html(html);}});}$(block).toggle();if($('.isk').css('display')=='block'){document.getElementById('b1').className='sear actkn'}else{document.getElementById('b1').className='sear'}if($('.isk').css('display')=='block'||$('.cat-all').css('display')=='block'||$('.mcat-all').css('display')=='block'||$('.misk').css('display')=='block'||$('#men1 ul').css('display')=='block'||$('.msor').css('display')=='block')
  20. {$('#h-n').hide();}else{$('#h-n').show();}if($('.mcat-all').css('display')=='block'){$('#men1 ul').hide();}});};for(var i=0;i<rels.length;i++){loop(i);}$(document).click(function(event)
  21. {for(var i=0;i<rels.length;i++){var btn=rels[i][0];var block=rels[i][1];var $btn=$(btn);var $block=$(block);if($("#mpois").css("display")=="block")
  22. {$("#who").focus();}if($btn.is(event.target)||$block.is(event.target)||$btn.has(event.target).length||$block.has(event.target).length)continue;var bpois=$("#v-p");var mpois=$('#mpois');if(bpois.css('display')=='block')
  23. {if(!bpois.is(event.target)&&bpois.has(event.target).length===0&&!mpois.is(event.target)&&mpois.has(event.target).length===0){bpois.hide();mpois.hide();}}else{$(block).hide();}if($('.cat-all').css('display')=='block'){if(document.getElementById('b2'))
  24. {document.getElementById('b2').className='vvr actkn'}}else{if(document.getElementById('b2')){document.getElementById('b2').className='vn'}}if($('.isk').css('display')=='block'){if(document.getElementById('b2'))
  25. {document.getElementById('b1').className='sear actkn'}}else{if(document.getElementById('b2'))
  26. {document.getElementById('b1').className='sear'}}if($('.isk').css('display')=='block'||$('.cat-all').css('display')=='block'||$('.mcat-all').css('display')=='block'||$('.misk').css('display')=='block'||$('#men1 ul').css('display')=='block'||$('.msor').css('display')=='block'){$('#h-n').hide();}else{$('#h-n').show();}}});
  27.    </script>
  28. </body></html>
Добрый день!
Вы показали совершенно нечитаемый код.
Это Ваш код.
Спойлер (Отобразить)
Обратите внимание на то, что первый тэг <div id="gl-blocl" class="gl"> не закрыт.
Сомневаюсь,что jquery и/или javascript будут работать с дефектным html-кодом.
Удачи!
3. LIME - 24 Марта, 2020 - 14:22:05 - перейти к сообщению
Vladimir Kheifets пишет:
Сомневаюсь,что jquery и/или javascript будут работать с дефектным html-кодом.
еще как будут
вернее с html-кодом javascript(почему jquery выделен отдельно непонятно) вообще не работает
он работает с DOM-моделью построенной браузером
а там уж как парсер решит ее построить по невалидному тексту, такая она и будет
javascript-у фиолетово, он работает с валидным деревом уже после парсинга
а браузеры наперебой соревнуются - кто как ухитрится исправить ошибки валидности
эксперименты с XHTML не помогли
4. Vladimir Kheifets - 26 Марта, 2020 - 08:43:18 - перейти к сообщению
LIME пишет:
Vladimir Kheifets пишет:
Сомневаюсь,что jquery и/или javascript будут работать с дефектным html-кодом.
еще как будут
вернее с html-кодом javascript(почему jquery выделен отдельно непонятно) вообще не работает
он работает с DOM-моделью построенной браузером
а там уж как парсер решит ее построить по невалидному тексту, такая она и будет
javascript-у фиолетово, он работает с валидным деревом уже после парсинга
а браузеры наперебой соревнуются - кто как ухитрится исправить ошибки валидности
эксперименты с XHTML не помогли
LIME пишет:
Vladimir Kheifets пишет:
Сомневаюсь,что jquery и/или javascript будут работать с дефектным html-кодом.
еще как будут
вернее с html-кодом javascript(почему jquery выделен отдельно непонятно) вообще не работает
он работает с DOM-моделью построенной браузером
а там уж как парсер решит ее построить по невалидному тексту, такая она и будет
javascript-у фиолетово, он работает с валидным деревом уже после парсинга
а браузеры наперебой соревнуются - кто как ухитрится исправить ошибки валидности
эксперименты с XHTML не помогли

Добрый день!
"почему jquery выделен отдельно непонятно", потому что был задан конкретный вопрос
leshiy пишет:
Есть код на jquery который открывает и закрывает определенные блоки при кликах по кнопкам или вне этих блоков.
Помогите переделать его на javascript.

Верно, дом модели, браузеры наперебой соревнуются исправить ошибки валидности,
НО получатся ли при этом то, что хотелось бы увидеть в браузере и будет ли это
выглядеть одинаково во всех актуальных браузерах?
вот два примера, управления видимости блока по клику на чистом JS (так просили)
здесь потерян закрывающий тэг div и браузер сам "дододумал" DOM-модель
Спойлер (Отобразить)

здесь нет потеряных тэгов
Спойлер (Отобразить)

Результаты, однако, получаются разные, поэтому если Вы хотите правильно управлять видимостью блоков
т.е чтобы эти блоки по клику там, где хотелось бы появлялись бы в желаемом месте,
лучше самостоятельно исправить ошибки валидности html,
не полагаясь на искусственный интеллект, а потом уже заниматься jquery и/или javascript.
Удачи!

 

Powered by ExBB FM 1.0 RC1