Agregar estilo en línea usando Javascript

91

Estoy intentando agregar este código a un elemento div creado dinámicamente

style = "width:330px;float:left;" 

El código en el que crea la dinámica dives

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

Mi idea es agregar el estilo después, < div class="well"pero no sé cómo lo haría.

Curtis Crewe
fuente
1
¿Qué diferencia hace? El estilo en línea siempre tendrá la mayor especificidad.
Amberlamps
debido a que el div se crea dinámicamente, no puedo usar estático ya que es un script de biblioteca Javascript completo
Curtis Crewe
Quizás este sea un problema XY. ¿Qué estás intentando lograr? ¿Es nFilter.style.width = '330px'; nFilter.style.float = 'left';lo que buscas?
Amberlamps

Respuestas:

127
nFilter.style.width = '330px';
nFilter.style.float = 'left';

Esto debería agregar un estilo en línea al elemento.

Dharman
fuente
37

Puedes hacerlo directamente en el estilo:

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;");
Mario S
fuente
6
No el estilo CSS, pero la tercera opción con setAttribute funcionó perfectamente para mí.
milkersarac
16

Usando jQuery:

$(nFilter).attr("style","whatever");

De lo contrario:

nFilter.setAttribute("style", "whatever");

Deberia trabajar

Jean-Georges
fuente
6
No es necesario usar JQuery en este caso
Dharman
10
Da una solución alternativa sin JQuery. No veo la necesidad de un voto negativo.
Termato
¿La solución JS de vainilla correcta y solicitada es la solución alternativa? ¿No el que nadie pidió que involucra una biblioteca que nadie mencionó?
Silvio Langereis
14

Puedes probar con esto

nFilter.style.cssText = 'width:330px;float:left;';

Eso debería hacerlo por ti.

Héctor Romero
fuente
10
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);
James Kyburz
fuente
7

Algunas personas tienen un ejemplo con setAttribute que me gusta. Sin embargo, asume que no tiene ningún estilo configurado actualmente. Tal vez haría algo como:

nFilter.setAttribute('style', nFilter.getAttribute('style') + ';width:330px;float:left;');

O conviértalo en una función auxiliar como esta:

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

setStyle(nFilter, 'width:330px;float:left;');

Esto asegura que pueda agregarle estilos continuamente y no eliminará ningún estilo establecido actualmente al agregar siempre los estilos actuales. También agrega un punto y coma adicional para que si alguna vez falta un estilo, se agregará otro para asegurarse de que esté completamente delimitado.

Stuyam
fuente
3

deberías hacer una clase css y .my_styleluego usar.addClass('.mystyle')

bennett_an
fuente
3

Si no desea agregar cada propiedad css línea por línea, puede hacer algo como esto:

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);

Vincurekf
fuente
1

Usar cssText

nFilter.style.cssText +=';width:330px;float:left;';
marbor3
fuente
1

Prueba algo como esto

document.getElementById("vid-holder").style.width=300 + "px";
Zubair Mushtaq
fuente
-1

Hágalo con css ahora que ha creado la clase. .well {ancho: 330px; flotador izquierdo; }

Seth K
fuente