Увеличение свойства CSS padding-top в Javascript - PullRequest
2 голосов
/ 21 октября 2009

У меня определен CSS для div

#myDiv
{
  padding-top: 20px,
  padding-bottom: 30px
}

В функции JS я хотел бы увеличить значение padding-top на 10px

function DoStuff()
{
  var myDiv = document.getElementById('myDiv');
  //Increment by 10px. Which property to use and how? something like..
  //myDiv.style.paddingTop += 10px;
}

Ответы [ 2 ]

6 голосов
/ 21 октября 2009

Свойство .style может читать только встроенные стили, определенные для элемента. Он не может читать стили, определенные в таблицах стилей.

Вам нужна библиотека для получения значения или используйте что-то вроде (из этот вопрос ):

function getStyle(elem, name) {
    // J/S Pro Techniques p136
    if (elem.style[name]) {
        return elem.style[name];
    } else if (elem.currentStyle) {
        return elem.currentStyle[name];
    }
    else if (document.defaultView && document.defaultView.getComputedStyle) {
        name = name.replace(/([A-Z])/g, "-$1");
        name = name.toLowerCase();
        s = document.defaultView.getComputedStyle(elem, "");
        return s && s.getPropertyValue(name);
    } else {
        return null;
    }
}

Тогда ваш код становится:

var element = document.getElementById('myDiv'),
    padding = getStyle(element, 'paddingTop'); // eg "10px"

element.style.paddingTop = parseInt(padding, 10) + 10 + 'px';

Ссылки:

1 голос
/ 21 октября 2009

Вы должны использовать jquery для такого рода вещей, так как большинство других решений не будут полностью совместимы с браузерами, и вы потратите несколько дней на то, чтобы вычесать волосы.

function Dostuff()
{
    var currentPadding =  $('#myDiv').css('padding-top');
    $('#myDiv').css('padding-top', currentPadding + 1);
}

Подробнее см. Jquery.com.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...