使用Javascript添加内联样式

Cur*_*ewe 79 javascript css innerhtml

我正在尝试将此代码添加到动态创建的div元素中

style = "width:330px;float:left;" 
Run Code Online (Sandbox Code Playgroud)

创建动态的代码div

var nFilter = document.createElement('div');
nFilter.className = 'well';
nFilter.innerHTML = '<label>' + sSearchStr + '</label>';
Run Code Online (Sandbox Code Playgroud)

我的想法是添加后的风格,< div class="well"但我不知道我是怎么做的.

Dha*_*man 112

nFilter.style.width='330px';
nFilter.style.float='left';
Run Code Online (Sandbox Code Playgroud)

这应该为元素添加内联样式.


Mar*_*num 33

你可以直接在风格上做到:

var nFilter = document.createElement('div');
nFilter.className = 'well';
nFilter.innerHTML = '<label>'+sSearchStr+'</label>';

// Css styling
nFilter.style.width = "330px";
nFilter.style.float = "left";

// or
nFilter.setAttribute("style", "width:330px;float:left;");
Run Code Online (Sandbox Code Playgroud)

  • 不是CSS样式,但setAttribute的第三个选项对我来说非常适合. (4认同)

小智 11

使用jQuery:

$(nFilter).attr("style","whatever");
Run Code Online (Sandbox Code Playgroud)

除此以外 :

nFilter.setAttribute("style", "whatever");
Run Code Online (Sandbox Code Playgroud)

应该管用

  • 他提供了一个没有JQuery的替代解决方案.不要看到需要downvote. (6认同)
  • 在这种情况下,不必使用JQuery (4认同)

stu*_*yam 10

一些人有一个使用我喜欢的 setAttribute 的例子。但是,它假定您当前没有设置任何样式。我可能会做这样的事情:

nFilter.setAttribute('style', nFilter.getAttribute('style') + ';width:330px;float:left;');
Run Code Online (Sandbox Code Playgroud)

或者把它变成这样的辅助函数:

function setStyle(el, css){
  el.setAttribute('style', el.getAttribute('style') + ';' + css);
}

setStyle(nFilter, 'width:330px;float:left;');
Run Code Online (Sandbox Code Playgroud)

这确保您可以连续添加样式,并且不会通过始终附加到当前样式来删除当前设置的任何样式。它还添加了一个额外的分号,以便如果某个样式丢失了一个,它将附加另一个以确保它被完全分隔。


Jam*_*urz 9

var div = document.createElement('div');
div.setAttribute('style', 'width:330px; float:left');
div.setAttribute('class', 'well');
var label = document.createElement('label');
label.innerHTML = 'YOUR TEXT HERE';
div.appendChild(label);
Run Code Online (Sandbox Code Playgroud)


Hec*_*ero 9

你可以试试这个

nFilter.style.cssText = 'width:330px;float:left;';
Run Code Online (Sandbox Code Playgroud)

那应该为你做.


小智 6

如果你不想逐行添加每个 css 属性,你可以这样做:

document.body.insertAdjacentHTML('afterbegin','<div id="div"></div>');

/**
 * Add styles to DOM element
 * @element DOM element
 * @styles object with css styles
 */
function addStyles(element,styles){
  for(id in styles){
    element.style[id] = styles[id];
  }
}

// usage
var nFilter = document.getElementById('div');
var styles = {
  color: "red"
  ,width: "100px"
  ,height: "100px"
  ,display: "block"
  ,border: "1px solid blue"
}
addStyles(nFilter,styles);
Run Code Online (Sandbox Code Playgroud)