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.


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.


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

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


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.


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

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.


3

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


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



1

Prueba algo como esto

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

-1

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.