За последние 24 часа нас посетили 62752 программиста и 1742 робота. Сейчас ищет 1151 программист ...

Изменить свойство CSS

Тема в разделе "JavaScript и AJAX", создана пользователем Mat, 25 ноя 2009.

  1. Mat

    Mat Активный пользователь

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    Всем привет! Есть стиль значит, к примеру такой: [css].my_style
    {
    color: #666666;
    background-color: #FFFFFF;
    }[/css]

    Есть ячейка таблицы с этим стилем:
    HTML:
    1. <table cellpadding="0" cellspacing="0" align="center">
    2.                         <tr>
    3.                             <td class="my_style"/>
    4.                         </tr>
    5.                         </table>
    Вопрос, как обратиться к свойству, скажем, 'background-color' стиля 'my_style', чтобы его изменить?
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    1. Дописать второй класс, который в ccs-файле должен быть объявлен ниже, чем my_style:
    .my_style {...}
    .correcting {...}

    <td class="my_style correcting">

    2. Задать bg через атрибут style у td
     
  3. Mat

    Mat Активный пользователь

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    нет, изменить класс нужно из JS, ок или как это всё создать программно?
     
  4. karakh

    karakh Активный пользователь

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    [js]function getSelector(sText)
    {
    var S = document.styleSheets[0]
    var rules = S.rules||S.cssRules // IE || others
    for(var r=0;r<rules.length;r++)
    if(rules[r].selectorText==sText)
    return rules[r].style
    return null;
    }[/js]

    Передается туда имя класса ('.my_style') - точка в начале потому что класс. В принципе можно передать любой селектор.

    ну и дальше тупо
    [js]getSelector(".my_style").backgroundColor = "#008000" [/js]

    Но реально намного проще сделать другой класс и менять класс для твоего td

    [js]var elem = document.getElementById('my_id');

    if (!elem.className.match(/\bnew_class\b/) {elem.className += "new_class";}//проверяем назначен ли класс элементу и если нет то добавляем.
    [/js]
    или проще
    [js]elem.className = "new_class"; // неважно что там было - поставили новый класс вместо старого[/js]
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Ой, блин. Я не посмотрел раздел, пардон.
     
  6. Mat

    Mat Активный пользователь

    С нами с:
    12 дек 2006
    Сообщения:
    391
    Симпатии:
    0
    Спасибо karakh, сейчас буду тестить всё.... действительно обращаться по id гараздо быстрее... [js]document.getElementById('myId').style.backgroundColor="#000FFF";[/js]