Как получить цвет элемента html? [Дубликат]

Все аргументы функции в ECMAScript передаются по значению. Это означает, что значение вне функции копируется в аргумент внутри функции так же, как значение копируется из одной переменной в другую. Если значение является примитивным, то оно действует так же, как и примитивная переменная, и если значение является ссылкой, оно действует как копия ссылочной переменной. Это часто является путаницей для разработчиков, поскольку к переменным обращаются как по значению, так и по ссылке, но аргументы передаются только по значению. Когда аргумент передается по значению, значение копируется в локальную переменную (именованный аргумент и в ECMAScript - слот в объекте arguments). Когда аргумент передается по ссылке, местоположение значения в памяти сохраняется в локальной переменной, что означает, что изменения в локальной переменной отражаются вне функции. (Это невозможно в ECMAScript.)

11
задан Yi Jiang 23 September 2010 в 13:31
поделиться

4 ответа

Свойства .style.* отображаются непосредственно на атрибут style, а не на прикладной стиль. Для этого вы хотите getComputedStyle .

Я бы серьезно подумал о переключении .className и полностью отделил презентацию от логики.

23
ответ дан Quentin 22 August 2018 в 23:31
поделиться
  • 1
    стиль не следует называть атрибутом. Это объект. Каждый элемент узла DOM имеет свойство стиля. Это свойство является объектом. ... Атрибут стиля HTML используется для добавления свойств в свойство стиля узла DOM, представляющего элемент HTML. После анализа кода HTML у нас больше нет атрибутов HTML, а свойств объекта. – Šime Vidas 23 September 2010 в 13:34
  • 2
    @ Šime Vidas: Я думаю, что если вы перечитаете ответ Дэвида, вы поймете, что он правильно сделал это различие. – T.J. Crowder 23 September 2010 в 13:35
  • 3
    @David Dorward: Спасибо за вашу помощь. Итак, каково использование атрибута style, поскольку оно не могло отражать изменение стиля CSS в реальном времени? – Jichao 23 September 2010 в 13:36
  • 4
    @jcyang: Объект style для элемента в DOM предназначен для изменения стиля, применяемого к этому конкретному элементу , точно так же, как атрибут style в разметке. Если вы хотите изменить определение стиля в таблице стилей, вы можете сделать это, это просто в другом месте: developer.mozilla.org/En/DOM/Stylesheet – T.J. Crowder 23 September 2010 в 13:38
  • 5
    Атрибут стиля существует до разбора HTML. После того, как страница проанализирована, атрибут стиля больше отсутствует. Объект стиля можно манипулировать, и тогда он больше не будет «отображать». к исходному атрибуту стиля исходного кода HTML. – Šime Vidas 23 September 2010 в 13:39

Если вы можете использовать jQuery, существует метод, называемый .is

. Чтобы проверить, что-то не отображается, я бы сделал ... $('someSelector').is(':visible') ...

Это вернет false, если для атрибута display установлено значение None.

0
ответ дан mplungjan 22 August 2018 в 23:31
поделиться

Я бы рекомендовал использовать библиотеку JavaScript для получения вычисленного стиля. Например, используя jQuery, вы можете получить вычисленный стиль с помощью метода css () ...

$("#a").css("display");

Метод css () - это кросс-браузерное решение, поскольку оно внутренне использует объект стиля, и оба getComputedStyle и объект currentStyle.

2
ответ дан Šime Vidas 22 August 2018 в 23:31
поделиться

Вам нужно вычисленное значение свойства отображения для элемента. Вы можете получить это следующим образом. Обратите внимание, что большинство браузеров поддерживают window.getComputedStyle() , тогда как ближайший эквивалент в IE является свойством currentStyle элемента:

var el = document.getElementById('a');
var styleObj;

if (typeof window.getComputedStyle != "undefined") {
    styleObj = window.getComputedStyle(el, null);
} else if (el.currentStyle != "undefined") {
    styleObj = el.currentStyle;
}

if (styleObj) {
   alert(styleObj.display);
}
6
ответ дан Tim Down 22 August 2018 в 23:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: