Все аргументы функции в ECMAScript передаются по значению. Это означает, что значение вне функции копируется в аргумент внутри функции так же, как значение копируется из одной переменной в другую. Если значение является примитивным, то оно действует так же, как и примитивная переменная, и если значение является ссылкой, оно действует как копия ссылочной переменной. Это часто является путаницей для разработчиков, поскольку к переменным обращаются как по значению, так и по ссылке, но аргументы передаются только по значению. Когда аргумент передается по значению, значение копируется в локальную переменную (именованный аргумент и в ECMAScript - слот в объекте arguments). Когда аргумент передается по ссылке, местоположение значения в памяти сохраняется в локальной переменной, что означает, что изменения в локальной переменной отражаются вне функции. (Это невозможно в ECMAScript.)
Свойства .style.*
отображаются непосредственно на атрибут style
, а не на прикладной стиль. Для этого вы хотите getComputedStyle .
Я бы серьезно подумал о переключении .className
и полностью отделил презентацию от логики.
Если вы можете использовать jQuery, существует метод, называемый .is
. Чтобы проверить, что-то не отображается, я бы сделал ... $('someSelector').is(':visible')
...
Это вернет false, если для атрибута display установлено значение None.
Я бы рекомендовал использовать библиотеку JavaScript для получения вычисленного стиля. Например, используя jQuery, вы можете получить вычисленный стиль с помощью метода css () ...
$("#a").css("display");
Метод css () - это кросс-браузерное решение, поскольку оно внутренне использует объект стиля, и оба getComputedStyle и объект currentStyle.
Вам нужно вычисленное значение свойства отображения для элемента. Вы можете получить это следующим образом. Обратите внимание, что большинство браузеров поддерживают 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);
}
style
, поскольку оно не могло отражать изменение стиля CSS в реальном времени? – Jichao 23 September 2010 в 13:36style
для элемента в DOM предназначен для изменения стиля, применяемого к этому конкретному элементу i>, точно так же, как атрибутstyle
в разметке. Если вы хотите изменить определение стиля в таблице стилей, вы можете сделать это, это просто в другом месте: developer.mozilla.org/En/DOM/Stylesheet – T.J. Crowder 23 September 2010 в 13:38