Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как изменять параметры целого класса css-стиля через JS?

14K
17 августа 2006 года
Leviafan
28 / / 07.08.2006
Думаю вопрос понятен из темы, приведу пример:
<style>
.ico{
position:absolute;
top:10px;
left:10px;
background-color:red;
border:1 inset;
}
</style>
<script>
function a(){
//здесь мне надо поменять стиль всего класса ico
}
</script>
<body>
<div id='mainico' class='ico' onclick="a()"></div>
<div id='ico1' class='ico'></div>
<div id='ico2' class='ico'></div>
<div id='ico3' class='ico'></div>
<div id='ico4' class='ico'></div>
</body>

Вот пример, так что, кто знает помогите, если конечно такое вообще возможно))
12
18 августа 2006 года
alekciy
3.0K / / 13.12.2005
Вообще-то принято пользоваться поиском.
Для IE:
 
Код:
document.styleSheets[0].addRule(".ico","background-color: silver");
, для всего остального
 
Код:
document.styleSheets[0].insertRule(".ico {background-color: silver;}",0);
.
14K
18 августа 2006 года
Leviafan
28 / / 07.08.2006
Спасибо =)
14K
18 августа 2006 года
Leviafan
28 / / 07.08.2006
alekciy извини, НО... мне так, как ты сказал не подходит. Хотя, ты прав, это я пример написал не подумав. Таблица-то у меня находится в файле, а коллекция styleSheets работает с объектами styleSheet документа (даже не с тем что мы пишем в теге <style>).
И... я посмотрел, как ты посоветовал, в поиске. Там говорилось ещё и о том, что можно обращаться к классу по имени, но способ так и не представили, так что вопрос остаётся открытым или даже так - более прозрачным: "Как обращаться в JS к классу стиля по имени?"
15
18 августа 2006 года
shaelf
2.7K / / 04.05.2005
document.getElementById('idBlock').styleName = "styleName" - это обращение по имени
document.getElemenetById('idBlock').style.border = "1px #000 solid" - установка нового правила для текущего эллемента
12
18 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE=shaelf]document.getElementById('idBlock').styleName = "styleName" - это обращение по имени
document.getElemenetById('idBlock').style.border = "1px #000 solid" - установка нового правила для текущего эллемента[/QUOTE]
shaelf! Будь внимательнее ))) ему нужно переназначить стиль для всего класса, а не для стиля отдельного элемента.
12
18 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE=Leviafan]alekciy извини, НО... мне так, как ты сказал не подходит.[/QUOTE]
Ну и какая разница, где CSS?! Ты видно не пробывал этот пример. У меня и с внешним файлом (<link href="style.css" type="text/css" rel="stylesheet">) работает. Да и не може не работать, ведь изменение стиля идет через DOM API!
12
18 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE=Leviafan]Там говорилось ещё и о том, что можно обращаться к классу по имени,[/QUOTE]
Через DOM можно много чего сделать. И имя класса вычислить, а даже сколько в данный момент и для каких элементов и сколько загружено свойств и при желании переназначить их.
И нормальный браузеры подобные Opera или FireFox позволяют так делатьно, но не гребаный IE. А посколько очень много юзверей сидят под ослом, то болшого толку от такого JS скрипта не будет. Кросс-браузерность не поддерживает, что для сайта не есть гуд.
15
19 августа 2006 года
shaelf
2.7K / / 04.05.2005
Тогда если кому не сложно, объясните мне пожалуйста, где это может пригодится и это нельзя будет сделать средствами JavaScript
14K
19 августа 2006 года
Leviafan
28 / / 07.08.2006
shaelf ты о чём?
14K
19 августа 2006 года
Leviafan
28 / / 07.08.2006
[QUOTE=alekciy]Через DOM можно много чего сделать. И имя класса вычислить, а даже сколько в данный момент и для каких элементов и сколько загружено свойств и при желании переназначить их.
И нормальный браузеры подобные Opera или FireFox позволяют так делатьно, но не гребаный IE.[/QUOTE]

Мне так-то под IE и нужно =)
Ну и получается, что решить проблему обращения к классу по имени через JS в IE нельзя?!
15
20 августа 2006 года
shaelf
2.7K / / 04.05.2005
>>shaelf ты о чём?
Я о смене / добавлении / изменении средствами JavaScript css файла. Для чего это нужно? Для "я умею" или это преследуются более высокие идеалы? Только при написании JavaScript кода товарищи, не забывайте, что он юзает локальные ресурсы. Мне нужно было создать несложную таблицу серез DOM и при создании более или менее большой таблицы та же опера просто сделала 100% нагрузку на проц (AMD64 3000+) и висела так минут 5 (потом я её принудительно закрыл).
14K
20 августа 2006 года
Leviafan
28 / / 07.08.2006
>> Для чего это нужно?
Это нужно для более простого решения одной задачки, её конечно можно решить по-другому, но хочется использовать именно этот вариант...
12
20 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE=Leviafan]Мне так-то под IE и нужно =)
[/QUOTE]
По сабжу темы я уже ответил, как для всех нормальных браузерах, так и для ослика.
14K
20 августа 2006 года
Leviafan
28 / / 07.08.2006
[QUOTE=alekciy]По сабжу темы я уже ответил, как для всех нормальных браузерах, так и для ослика.[/QUOTE]

Ты постоянно пытаешься меня подловить, что я не пробую то, о чём мне говорят, а сужу по представлениям :( , так вот ещё раз повторю, то что ты мне уже написал НЕ РАБОТАЕТ и вопрос остался открытым...

Пример.
Код:
<HTML>
<head>
  <link rel="stylesheet" href="files/main.css" type="text/css"/>
  <style>
    .ico{
      position:absolute;
      top:10px;
      left:10px;
      width:400;
      height:300;
      background-color:red;
      border:1 inset;
    }
  </style>
  <script>
    function a(){
      document.styleSheets[0].addRule(".ico","background-color: silver");
    }
</script>
</head>
<body>
<div id='mainico' class='ico' &#111;&#110;click="a()"></div>
</body>
</HTML>

А теперь попробуй пощёлкать по диву и скажи мне, в чём я опять тебя не понял?.. (Вот я могу даже объяснить, почему это не работает, а объяснение говорит, что изменять свойства класса нужно по-другому!)
12
20 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE=Leviafan]Ты постоянно пытаешься меня подловить, что я не пробую то, о чём мне говорят, а сужу по представлениям[/QUOTE]
Именно так. Если ты что-либо утверждаешь, то должен доказать свои слова кодом. Потому как если ты не можешь доказать, то как минимум заблуждаешься, как максимум вводишь в заблуждение других.
12
20 августа 2006 года
alekciy
3.0K / / 13.12.2005
[QUOTE=Leviafan]то что ты мне уже написал НЕ РАБОТАЕТ и вопрос остался открытым...

А теперь попробуй пощёлкать по диву и скажи мне, в чём я опять тебя не понял?.. [/QUOTE]
ЭТО РАБОТАЕТ!
Код:
<HTML>
<head>
  <link rel="stylesheet" href="files/main.css" type="text/css"/>
  <style>
    .ico{
      position:absolute;
      top:10px;
      left:10px;
      width:400;
      height:300;
      background-color:red;
      border:1 inset;
    }
  </style>
  <script>
    function a(){
      document.styleSheets[1].addRule(".ico","background-color: silver");
    }
</script>
</head>
<body>
<div id='mainico' class='ico' &#111;&#110;click="a()">1111111</div>
</body>
</HTML>

Ты сказал, что у тебя стили во внешней CSS я тебе и напил код. Если бы сказал, что у тебя таблица стилей как втроеная, так и внешняя, и нужно изменять свойства во внетреней, я бы тебе написал для этого варианта код.

Потому как нужно понимать, что styleSheets[n] содержить все таблицы стилей для данного документа. Первая таблица в данном случае это подключеная, вторая (индекс 1) это втроеная. Если написать:
Код:
<link rel="stylesheet" href="files/main.css" type="text/css"/>
 <style>
    .my_class {
      position:absolute;
      top:10px;
    }
  </style>

  <style>
    .ico{
      position:absolute;
      top:10px;
      left:10px;
      width:400;
      height:300;
      background-color:red;
      border:1 inset;
    }
  </style>

, то пришло бы в JS прописывать
document.styleSheets[2].addRule(".ico","background-color: silver");

Надеюсь это-то понятно?!
12
20 августа 2006 года
alekciy
3.0K / / 13.12.2005
Leviafan
Кстати, как видишь, если я отверждаю что-либо, то могу свою правоту доказать конкретным кодом который можно скопировать с форума и уведиться, что он работает.
14K
21 августа 2006 года
Leviafan
28 / / 07.08.2006
alekciy, большое Тебе cпасибо! =)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог