Javascript 正在通过';document.getElementById(o.style[p]=v';有效吗?

Javascript 正在通过';document.getElementById(o.style[p]=v';有效吗?,javascript,css,function,Javascript,Css,Function,我们希望能从我们的产品中使用的自定义库中删除一些脂肪 一个常用的操作是更改对象样式 通常,我们通过以下方式进行: document.getElementById('object').style.property='value'; 我刚刚在chromes console中测试了以下各项,它起到了作用: function objStyle(o,p,v){ document.getElementById(o).style[p]=v; } objStyle('object','propert

我们希望能从我们的产品中使用的自定义库中删除一些脂肪

一个常用的操作是更改对象样式

通常,我们通过以下方式进行:

document.getElementById('object').style.property='value';
我刚刚在chromes console中测试了以下各项,它起到了作用:

function objStyle(o,p,v){
    document.getElementById(o).style[p]=v;
}

objStyle('object','property','value');
这是一种有效的做事方式吗


当使用这种方式做事时,你能想到什么陷阱吗?交叉浏览器兼容性?

是的,这是完全正确的。通过
.name
访问的属性也可以通过
['name']
访问

适用于任何对象中的任何属性,例如:

window['alert']('Hello world.');

document['getElementById']('object')['style']['color'] = '#fff';
你的代码很好

<>我想考虑的是,如果您需要对同一个元素执行多个更改,您是否希望继续调用<代码>文档.GETelEnMyIdId()/代码>(在函数内部)。我要建议的是,为了显示更多的选项而过多,但是考虑到您可以将ID传递给您的函数,或者直接传递对元素的引用,或者有一个函数接受字符串或元素引用,并从参数类型中计算出来:

function objStyleById(oId,p,v){
   document.getElementById(oId).style[p]=v;
}

function objStyle(o,p,v) {
   o.style[p] = v;
}

function objStyleAuto(o,p,v) {
   if (typeof o === "string")
      o = document.getElementById("o");
   // else not a string so assume o is element reference
   o.style[p] = v;
}

objStyleById('object','property','value');

var myEl = document.getElementById("someElement");
objStyle(myEl,"prop","val");
objStyle(myEl,"prop2","val");
// some other non-style operation on myEl, e.g.,
myEl.className = "something";
myEl.innerHTML = "something";
objStyle(myEl.parentNode,"prop","value");

objStyleAuto('object','property','value');
objStyleAuto(myEl,'property','value');

非常感谢你,哈哈。必须等待8分钟才能接受答案。您应该使用jQuery<代码>$('#object').css('property','value')选择上面的答案只是因为他先回答,我已经说过我会选择他的;)没问题,Guffa知道他的东西(事实上我已经对他的答案投了更高的票),但我想你可能还需要一些其他的想法来将最初的想法推进一点。