Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Функция для вычисления стилей. (https://javascript.ru/forum/misc/19005-funkciya-dlya-vychisleniya-stilejj.html)

prowoke 22.07.2011 18:00

Функция для вычисления стилей.
 
function returnStyle(element, typestyle) {
var style = '';
	if (element.currentStyle) 
		style = element.currentStyle.typestyle;
	else  if (window.getComputedStyle) 
		style = window.getComputedStyle(element, null).typestyle;

return style;
}


Вот написал такую функцию. Ей первым аргументом даётся сам элемент, 2 аргументом даётся тип стиля, который нужно найти. Но она не работает, подозреваю что проблема в строчках
element.currentStyle.typestyle, типо он может динамически подставить в этой ситуации.

А вот так этот код работает. Направьте на путь истинный, пожалуйста.

var styler = '';
	if (textarea.currentStyle) 
		styler = textarea.currentStyle.height;
	else  if (window.getComputedStyle) 
		styler = window.getComputedStyle(textarea, null).height;ё


Да и ещё вот такой вопрос. А как вообще стили вычисляются текущие. Просто если брать как getComputedStyle, то он берёт из из файла css, но если после подключения будет стоять такой же стиль на этот элемент, только в тегах <style></style> то он перебивает из файла style.css. Также стили могут стоять в самом теге html. Так вот, можно ли как то скриптом вычислить текущий стиль, т.к. самый приоритетный?

NoResponse 23.07.2011 04:09

style = element.currentStyle[typestyle];
style = window.getComputedStyle(element, null)[typestyle];

Sweet 23.07.2011 11:05

Цитата:

Сообщение от prowoke
если брать как getComputedStyle, то он берёт из из файла css

Нет. Это тупая, ни на чем не основанная фантазия, возведенная в ранг утверждения. Но если подумать, разве функция называется getStyleFromCSSFile??? На самом деле, это функция возвращает расчитанные стили, т.е. то, что браузер посчитал для этого элемента. И css может и не быть. Тогда вычисляются стили по умолчанию (кстати, и функцию можно попроще сделать):
<body>
<span id="test"></span>
<script>
function returnStyle(element, typestyle){
  return "getComputedStyle" in window ?
           getComputedStyle(element, null)[ typestyle ] :
             element.currentStyle[ typestyle ];
};

alert( returnStyle( document.getElementById("test"), "display" ) );
</script>
</body>


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