У меня есть эта ошибка, но я не знаю почему:
Argument 1 of Window.getComputedStyle does not implement interface Element
HTML:
<div class = "reveal"></div>
JavaScript / jQuery:
var reveal = $('.reveal');
reveal.css('margin', '10px');
var resulte = window.getComputedStyle(reveal, 'margin');
@SaniSinghHuttunen arf такая же ошибка



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


getComputedStyle() - это функция JavaScript, которая ожидает объект JavaScript, а не объект jQuery. Передайте ему reveal[0], и он заработает.
Второй аргумент функции getComputedStyle() является необязательным и предназначен для псевдоэлемента, а не для свойства CSS. Вы можете использовать getComputedStyle(), чтобы получить все свойства, а затем использовать getPropertyValue('margin'), чтобы получить конкретное свойство, которое вам нужно.
Проблема в том, что когда вы присваиваете значение свойству margin в jQuery, как этот reveal.css('margin', '10px'), тогда оно применяется к каждому из полей (верхнее, правое, нижнее и левое), и свойство margin ничего не возвращает (в некоторых браузерах). Вам нужно будет получить каждую маржу отдельно.
var reveal = $('.reveal');
reveal.css('margin', '10px');
var resulte = window.getComputedStyle(reveal[0], null).getPropertyValue('margin-top');
console.info(resulte);.reveal {
background-color: #f00;
height: 50px;
width: 50px;
}<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class = "reveal"></div>Обратите внимание, что getPropertyValue('margin') работает только в некоторых браузерах, как я уже сказал. Используйте определенные поля getPropertyValue('margin-top'), если хотите, чтобы он работал во всех браузерах.
Проблема здесь в том, что вы передаете объект jQuery, где ожидается Element1.
Вы смешиваете jQuery и (vanilla / plain) JavaScript, которые НЕ совпадают. JavaScript - это язык, а jQuery - это библиотека, которая позволяет вам работать (в первую очередь) с DOM.
Объект jQuery не всегда взаимозаменяем с JavaScript, поэтому вам нужно извлекать фактические согласованные элементы.
Объект jQuery (с моей точки зрения) в основном представляет собой расширенный итерабельный объект, который содержит внутри все согласованные элементы. Если вы ожидаете только одно совпадение, оно должно быть в reveal[0].
В этом случае reveal[0] должен быть Element или HTMLElement, который затем можно передать функции window.getComputedStyle2.
Как насчет
window.getComputedStyle(reveal[0], 'margin');?