Сергей Ракипов,
потому что в строке 48 ошибка, строка 51 не может работать со строкой 48. |
Что у вас будет в coll?
Такое content.style.maxHeight = null; тоже нельзя. Свойство стиля - это строка. Если надо удалить, то ставят пустую строку. |
рони,
Я запустил цикл for потому что должно было быть несколько блоков И вот все исправил спасибо. по нулл понял, но если често оно и с нул работает и с пустой строкой. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> .collapsible { background-color: #777; color: white; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px; } .active, .collapsible:hover { background-color: #555; } .content { padding: 0 18px; max-height: 0px; overflow: hidden; transition: max-height 0.2s ease-out; background-color: #f1f1f1; } </style> </head> <body> <button class="collapsible">Open Collapsible</button> <div class="content"> Лишь явные признаки победы институционализации неоднозначны и будут смешаны с не уникальными данными до степени совершенной неузнаваемости, из-за чего возрастает их статус бесполезности. В своём стремлении повысить качество жизни, они забывают, что экономическая повестка сегодняшнего дня обеспечивает широкому кругу (специалистов) участие в формировании инновационных методов управления процессами. Сложно сказать, почему многие известные личности будут объявлены нарушающими общечеловеческие нормы этики и морали. </div> <button class="collapsible">Open Collapsible</button> <div class="content"> Лишь явные признаки победы институционализации неоднозначны и будут смешаны с не уникальными данными до степени совершенной неузнаваемости, из-за чего возрастает их статус бесполезности. В своём стремлении повысить качество жизни, они забывают, что экономическая повестка сегодняшнего дня обеспечивает широкому кругу (специалистов) участие в формировании инновационных методов управления процессами. Сложно сказать, почему многие известные личности будут объявлены нарушающими общечеловеческие нормы этики и морали. </div> <script> let coll = document.querySelectorAll(".collapsible"); // let content = document.querySelector(".content"); for (let i = 0; i < coll.length; i++) { coll[i].addEventListener("click", function() { this.classList.toggle("active"); let content = this.nextElementSibling; if (content.style.maxHeight) { content.style.maxHeight = "" } else { content.style.maxHeight = content.scrollHeight + "px"; } }) } </script> </body> </html> |
А какая здесь ошибка
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> .collapse__content{ display: none; } .collapse__content_open{ display: block; } </style> </head> <body> <div class="collapse"> <div class="collapse__hitarea">Toggle</div> <div class="collapse__content">Text</div> </div> <div class="collapse"> <div class="collapse__hitarea">Toggle</div> <div class="collapse__content">Text</div> </div> <script> const hitarea = document.querySelectorAll('.collapse__hitarea') const content = document.querySelectorAll('.collapse__content') const createCollapse = (hitarea, content) => { hitarea.addEventListener('click', () => { content.classList.toggle('collapse__content_open') }) } const collapse = document.querySelectorAll('.collapse'); collapse.forEach(createCollapse); </script> </body> </html> |
Сергей Ракипов,
надо запомнить что свойства элемента, отличаются от свойств списка элементов. ваш код, это фантазия на тему, а не использование js. |
рони,
То есть вот эта запись content.classList.toggle('collapse__content_open') она не пойдет? если да то какое тогда свойства брать? |
Сергей Ракипов,
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> .collapse__content { display: none; } .collapse__content_open { display: block; } </style> </head> <body> <div class="collapse"> <div class="collapse__hitarea">Toggle</div> <div class="collapse__content">Text</div> </div> <div class="collapse"> <div class="collapse__hitarea">Toggle</div> <div class="collapse__content">Text</div> </div> <script> const hitarea = document.querySelectorAll('.collapse__hitarea'); const content = document.querySelectorAll('.collapse__content'); const createCollapse = (button, i) => { button.addEventListener('click', () => { content[i].classList.toggle('collapse__content_open') }) } hitarea.forEach(createCollapse); </script> </body> </html> |
рони,
Правильно ли я понял что button это элемент <div class="collapse__hitarea">Toggle</div> а i это индекс. и эмент "услышал" клик запустил функцию где <div class="collapse__content">Text</div> с индексом i убрал или добавил класс. Но я не могу понять как i понял что он нулевой или первый |
Сергей Ракипов,
foreach |
рони,
я читал это там не написано это вот почему я кликнул на вторую кнопку а а он открыл первый блок, вот что ему сказало что при клике на первую втору кнопку он должен открыть элемент под индексом 1 а не к примеру 0 |
Часовой пояс GMT +3, время: 11:20. |