Получить свойства CSS из JS

Статус
Закрыто для дальнейших ответов.

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
Имеется подобная запись:
Код:
#link_search a{
		    font-size: 12pt;
		    color: #ff9023;
}
Как из JS подобраться к свойствам ссылки, не меняя запись в CSS?
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
Если бы id был у ссылки, тогда нет проблем. Как вообще обратиться когда стиль задан по id (#link_search)?

С jquery все понятно, но хочется разобраться как сделать руками. По ссылке там через style, с такой записью #link_search не сработает.

Нарыл вот такой вариант:
Код:
getComputedStyle(document.getElementById('link_search').childNodes[0]).getPropertyValue("color")
Но так можно только получить значение, изменить нельзя.
 

fath

Member
Регистрация
13.12.2011
Сообщения
17
в сером как-то так я сделал:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="" content="">
</head>
<body>
<div id="link_search">
<a href="#">Тест</a>
<a href="#">Тест2</a>
<a href="#">Тест3</a>
<a href="#">Тест4</a>
<a href="#">Тест5</a>
</div>
<script type="text/javascript">
var id = document.getElementById('link_search');
var list = id.childNodes;
for (var i=0; i<list.length; i+=2) {
list.style.color = '#ff9023';
list.style.fontSize = '12pt';
}
</script>
</body>
</html>
 

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
Говорил уже .style не сработает. Стиль задан через #link_search.
 

fath

Member
Регистрация
13.12.2011
Сообщения
17
покажи исходный код

Для особо одаренного!!!
B css указан #link_search a{ font-size: 12pt; color: #ff9023; }
с помощью javascripta не меняя запись в CSS делаем вот что { font-size: 126pt; color: #999; }


Вот полный исходный текст:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="" content="">
<style type="text/css">
#link_search a{
font-size: 12pt;
color: #ff9023;
}
</style>
<script type="text/javascript">
window.onload = function(){
var id = document.getElementById('link_search');
var list = id.childNodes;

for (var i=0; i<list.length; i+=2) {
list.style.color = '999';
list.style.fontSize = '126pt';
}
}

</script>
</head>
<body>
<div id="link_search">
<a href="#">Тест</a>
<a href="#">Тест2</a>
<a href="#">Тест3</a>
<a href="#">Тест4</a>
<a href="#">Тест5</a>
</div>

</body>
</html>
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Говорил уже .style не сработает.
Еще как работает!

Код:
<!DOCTYPE html>
<meta charset="utf-8">
<title>Script test</title>

<style type="text/css">
#link_search a{
						font-size: 12pt;
						color: #ff9023;
}
</style>

<h3>Ссылки с ID</h3>
<ul id="link_search">
<li><a href="#">Ссылка 1</a>
<li><a href="#">Ссылка 2</a>
<li><a href="#">Ссылка 3</a>
</ul>

<h3>Ссылки без ID</h3>
<ul>
<li><a href="#">Ссылка 4</a>
<li><a href="#">Ссылка 5</a>
<li><a href="#">Ссылка 6</a>
</ul>

<script type="text/javascript">
// получаем элемент с нужным ID
var element = document.getElementById('link_search');
// получаем массив элементов А внутри элемента с нужным ID
var links = element.getElementsByTagName('a');
for(var i = 0; i < links.length; i++) {
links[i].style.color = 'red';
}
</script>
Без скрипта первые три ссылки будут оранжевые, а со скриптом - красные. Попробуйте!

Читайте Фленагана!!!
 

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
И вправду работает, но смысл вопроса был в том чтобы изменить свойства именно в
Код:
#link_search a{
					    font-size: 12pt;
					    color: #ff9023;
}
а не в style.
 

tigra60

Спасатель
Регистрация
10.12.2009
Сообщения
1 990
Силлогизм какой-то!
Будьте добры объяснить толком, кто на ком стоял?
 

fath

Member
Регистрация
13.12.2011
Сообщения
17
У тигры все правильно написано, я как понял, что ты хочешь изменить сам файл стилей?
 

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
Да, похоже я запутал всех, попробую обяснить:
Код:
#link_search a{
										    font-size: 12pt;
										    color: #ff9023;
}
и

Код:
links[i].style
не одно и тоже.
Получается мы применяем новые свойства, которые имеют больший вес чем в #link_search a. Я хотел узнать есть ли возможность управлять стилями заданными в <style> через id. Но нашел способ только их получить. Пришел к выводу, что никак нельзя.
 

ALEXu

в сером
Регистрация
29.12.2010
Сообщения
307
Все таки возможно
Код:
//получить
document.styleSheets[0].cssRules[индекс правила].cssText
//удалить
document.styleSheet.deleteRule(индекс правила);
//добавить новое
document.styleSheet.insertRule(новое правило,индекс правила);
 
Статус
Закрыто для дальнейших ответов.
Верх Низ