检测是否应将键视为样式或属性

时间:2015-05-03 21:38:10

标签: javascript css dom styling

我有以下功能:

var applyStyling = function (element, object) {
    return _.each(object, function (value, key) {
       // determine whether the key should be treated as an attribute or style 
         if(style)
            element.style.key = value
         element.setAttribute(key, value)
    })
}

示例用法类似于

applyStyling('some dom element', {'id' : 'someID', 'zIndex' : 10})

如何检测密钥是否应被视为样式或属性?我只能找到如何检查元素上是否设置了属性/样式。

3 个答案:

答案 0 :(得分:1)

[2, 3, 0, 1]

编辑:基于OP评论的修改后的答案

var applyStyling = function (element, object) {
    return _.each(object, function (value, key) {
       // determine whether the key should be treated as an attribute or style 
         if(element.hasAttribute(key))
             element.setAttribute(key, value)
         else if (element.style.hasOwnProperty(key))
             element.style[key] = value
    })
}

答案 1 :(得分:0)

我担心没有快速回答。您可以列出/检查已定义的属性。但是,您如何预先列出 DOM元素上的用户定义属性或浏览器定义的属性,如样式属性。

你甚至可以为两者使用相同的名称(使用reserve),设置element.zIndex和element.style.id也没有错。

Nice Hack。 预先列出供您使用和滥用。

答案 2 :(得分:0)

var applyStyling = function (element, object) {
  for(var key in object) if(object.hasOwnProperty(key)) {
    if(element.style[key] !== void 0)
      element.style[key] = object[key];
    else
      element.setAttribute(key, object[key]);
  }
}
applyStyling(document.documentElement, {
  color: 'red',
  title: 'tooltip'
});

Some text
-(void)readAndFetchGroups
{

 //Fire up a thread to fetch online groups in background
[self performSelectorInBackground:@selector(fetchOnlineGroupsInBackground) withObject:nil];

}
-(void)fetchOnlineGroupsInBackground
{
 [Group fetchOnlineGroups:self];
}