Javascript:如何从var设置样式选择器

时间:2014-12-17 15:00:54

标签: javascript css

我的JavaScript风格有问题。

我有一个像这样的对象: styles = {background:'blue',width:'1000px'}

我需要write函数,它接受来自 styles 对象的每个属性,并将其应用为某些HTML元素的CSS选择器。

类似的东西:

function stylize(def){
     for(var key in def){
         document.getElementById("test").style.***SELECTOR***=def[key];
     }

}

但如何通过值的值获取样式选择器?

我需要jquery等纯粹的JS解决方案。

5 个答案:

答案 0 :(得分:1)

只需使用方括号:

function stylize(def) {
    for (var key in def) {
        document.getElementById("test").style[key] = def[key];
    }
}

注意:这只是一个例子;不是生产代码。

答案 1 :(得分:0)

一种方法是:



function setStylesByObj(el, styleObj) {
    var css = [];
    for (var prop in styleObj) {
        if (styleObj.hasOwnProperty(prop)) {
            css.push(prop + ': ' + styleObj[prop]);
        }
    }

    el.style.cssText = css.join(';');
}

var styles = {
    background: 'blue',
    height: '10em',
    width: '1000px'
};

setStylesByObj(document.getElementById('demo'), styles);

<div id="demo" style="color: orange; font-weight: bold">Hello there, world.</div>
&#13;
&#13;
&#13;

虽然上面明确地覆盖了现有的style属性;为了保留这些属性,连接可能会更好,而不是覆盖:

&#13;
&#13;
function setStylesByObj(el, styleObj) {
    var css = [];
    for (var prop in styleObj) {
        if (styleObj.hasOwnProperty(prop)) {
            css.push(prop + ': ' + styleObj[prop]);
        }
    }

    el.style.cssText += css.join(';');
}

var styles = {
    background: 'blue',
    height: '10em',
    width: '1000px'
};

setStylesByObj(document.getElementById('demo'), styles);
&#13;
<div id="demo" style="color: orange; font-weight: bold">Hello there, world.</div>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

如果您可以从您喜欢的图书馆访问Underscore的_.extend或其jQuery等效$.extend或类似的对象分配例程:

_.extend(element.style, styles);

这与@ SalmanA的解决方案基本相同,只是使用库例程,如果方便的话。

答案 3 :(得分:-1)

你可以用大写字母替换任何短划线,就像这样:

document.getElementById("test").style['backgroundColor'] = "#ff0000";

如果您想要一个准备好替换的函数,请使用jQuery libaray的jQuery.css:

jQuery("#test").css({'background-color':'#ff0000'})

答案 4 :(得分:-1)

或者你可以这样做:

document.getElementById('id1').style.color = 'red'