如何使用JavaScript获取元素的填充值?

R. *_*ewi 57 html javascript padding

textarea我的HTML中有一个.我需要将填充数值以像素为整数或浮点数.如何使用JavaScript获取它?我没有使用jQuery,所以我正在寻找纯JavaScript解决方案.

Šim*_*das 116

这将返回padding-left值:

window.getComputedStyle(txt, null).getPropertyValue('padding-left')
Run Code Online (Sandbox Code Playgroud)

在哪里txt是对TEXTAREA元素的引用.

以上适用于所有现代浏览器和IE9.但是,它在IE8及以下版本中不起作用.

现场演示: http ://jsfiddle.net/simevidas/yp6XX/

进一步阅读:https://developer.mozilla.org/en/DOM : window.getComputedStyle


顺便说一句,只是为了比较,这就是你如何使用jQuery完成同样的工作:

$(txt).css('padding-left')
Run Code Online (Sandbox Code Playgroud)

以上在IE6-8中有效.

  • 要获取数值,请务必将结果传递给`parseFloat`,即`parseFloat(window.getComputedStyle(txt,null).getPropertyValue('padding-left'))` (16认同)
  • `getComputedStyle` 上的第二个参数是可选的。你不需要它。 (3认同)
  • @user670839 是正确的,但未能提供详细信息。第二个参数用于定位伪元素,例如`::after`。即可以发出第二个参数,但使用“null”也是有效的。 (3认同)

Chu*_*ebs 15

搜索之后,我发现这个资源可以用来做你想做的事情.

他们希望你添加一个javascript函数:

function getStyle(oElm, strCssRule){
    var strValue = "";
    if(document.defaultView && document.defaultView.getComputedStyle){
        strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
    }
    else if(oElm.currentStyle){
        strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
            return p1.toUpperCase();
        });
        strValue = oElm.currentStyle[strCssRule];
    }
    return strValue;
}
Run Code Online (Sandbox Code Playgroud)

然后调用这样的函数来获得特定的样式:

getStyle(document.getElementById("container"), "padding-right");
Run Code Online (Sandbox Code Playgroud)

其中"container"是元素的id,"font-size"是属性名称.如果你可以保证元素上的所有CSS都是内联的,那么这个解决方案会更清晰:

document.getElementById("container").style.paddingRight;
Run Code Online (Sandbox Code Playgroud)

  • 该函数不适用于像`padding`这样的速记属性.您必须单独阅读各个组件.见这里:http://jsfiddle.net/simevidas/yp6XX/1/ (4认同)