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.