Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Объектно-ориентированная реализация связи dom-элемента и javascript-объекта (https://javascript.ru/forum/events/68045-obektno-orientirovannaya-realizaciya-svyazi-dom-ehlementa-i-javascript-obekta.html)

scv 22.03.2017 13:15

Объектно-ориентированная реализация связи dom-элемента и javascript-объекта
 
Столкнулся со следующей проблемой: нужно разработать механизм сворачивания. При клике на ссылке показывается или скрывается блок с контентом. Реализация должна быть объектно-ориентированная, требуется написать класс es6+ или функцию конструктор ~es5, инкапсулирующий в себе работу с dom элементами и событиями. Пример разметки:
<div class="simple-collapse">
<a href="#" class="collapse-control">Control</a>
<div class="collapse-content"></div>
</div>
<script type="text/javascript">
var obSimpleCollapse = new SimpleCollapse(".simple-collapse");
obSimpleCollapse.init();
</script>

рони 22.03.2017 13:35

scv,
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[js]
... ваш код...
[/js]


О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

destus 22.03.2017 14:27

<div class="simple-collapse">
    <a href="#" class="collapse-control">Control</a>
    <div class="collapse-content" hidden>Content</div>
  </div>
  
  <script>
    
    class SimpleCollapse {
      
      constructor(selector) {
        this.elem = document.querySelector(selector);
      }
      
      init() {
        this.elem.querySelector('a').onclick = this.toggleContent.bind(this);
      }
      
      toggleContent() {
        this.elem.querySelector('.collapse-content').hidden = !this.elem.querySelector('.collapse-content').hidden
      }
      
    }
    
    var obSimpleCollapse = new SimpleCollapse(".simple-collapse"); 
    obSimpleCollapse.init();
    
  </script>

Lipon 23.03.2017 07:12

Выше человек написал решение... babel для экспорта модуля вам в помощь...
Для скрытия элемента:
document.getElementById("myP").style.visibility = "hidden";
Или
document.getElementById("myP1").style.display = "none";


Подробнее https://www.w3schools.com/jsref/prop...visibility.asp


Часовой пояс GMT +3, время: 00:37.