将<param />添加到<object> </object>

时间:2012-09-14 14:09:32

标签: javascript activex

在我的javascript代码中,我正在创建一个<object>,如此:

var myObject = document.createElement('object');

然后,我向这个对象添加一些参数,以便这些参数反映在我的html中。

我可以这样做,但是在添加了越来越多的参数后,这段代码变得非常混乱和重复。

var param1 = document.createElement('param');
param.setAttribute('name', 'myName');
param.setAttribute('value', 'myValue');
myObject.appendChild(param1);

是否有更好的方法为此对象创建和添加参数?

如果它有任何区别,这是一个activeX控件对象。

谢谢!

4 个答案:

答案 0 :(得分:0)

您可以将该代码放入addParameters函数中,该函数接受一个对象并使用for in循环来添加对象中的所有属性。

答案 1 :(得分:0)

有多种方法可以添加属性

1

param1.name=myName;

2

param1[name]=myName;

您可以使用for in通过循环查看属性是否存在于对象中,并确保使用hasProperty将其限制为对象自己的属性。

答案 2 :(得分:0)

有一个令人兴奋的自助餐选择:

elem.id = 'NewId';
elem.value = 'NewValue';//etc...
elem.style.width = '100%';

或者,如果您只创建一个对象:

elem = '<div id="Foo" class="bar blackBlock andSomeOtherClass">InnerText or innerHTML go here</div>';

其中,在大多数情况下比手动创建它更快......:)

如果没有,这是我不时使用的一个小功能:

function createAssign(elem,attr)
{
    var i;
    elem = (typeof elem === 'object' ? elem : document.createElement(elem));
    if (typeof attr !== 'object')
    {
        return elem;
    }
    for (i in attr)
    {
        if (attr.hasOwnProperty(i))
        {
            elem[i] = (typeof attr[i] === 'object' ? createAssign(elem[i],attr[i]) : attr[i]);
        }
    }
    if (this !== window && this.appendChild)
    {
        this.appendChild(elem);
        return true;
    }
    return elem;
}
var el = createAssign('div',{id:'Foo',innerHTML:'bar',style:{width:'100%'}});
//or append directly:
createAssign.apply(document.body,['div',{id:'Foo',innerHTML:'bar',style:{width:'100%'}}]);

答案 3 :(得分:0)

像这样的东西会这样做

function addParams(obj, paramsObj){

  for(vals in paramsObj)
  {
     obj.setAttribute(vals, paramsObj[vals])
  }
}

var myObject = document.createElement('object');
var paramsObj = {
                  "value":"myValue"
                  "name":"myName" 
                };

addParams(myObject, paramsObj);