Ajouter un style en ligne à l'aide de Javascript

91

J'essaye d'ajouter ce code à un élément div créé dynamiquement

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

Le code dans lequel crée la dynamique divest

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

Mon idée est d'ajouter le style après < div class="well"mais je ne sais pas comment je le ferais.

Curtis Crewe
la source
1
Quelle différence cela fait? Le style en ligne aura toujours la spécificité la plus élevée.
Amberlamps
parce que le div est créé dynamiquement, je ne peux pas utiliser de statique puisqu'il s'agit d'un script de bibliothèque Javascript complet
Curtis Crewe
C'est peut-être un problème XY. Qu'essayez-vous d'accomplir? Est nFilter.style.width = '330px'; nFilter.style.float = 'left';ce que vous cherchez?
Amberlamps

Réponses:

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

Cela devrait ajouter un style en ligne à l'élément.

Dharman
la source
37

Vous pouvez le faire directement sur le style:

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
la source
6
Pas le style CSS mais la troisième option avec setAttribute fonctionnait parfaitement pour moi.
milkersarac
16

Utilisation de jQuery:

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

Autrement :

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

devrait marcher

Jean-Georges
la source
6
Il n'est pas nécessaire d'utiliser JQuery dans ce cas
Dharman
10
Il donne une solution alternative sans JQuery. Ne voyez pas la nécessité d'un vote défavorable.
Termato
La solution JS vanilla correcte et demandée est-elle la solution alternative? Pas celui que personne n'a demandé et qui concerne une bibliothèque dont personne n'a parlé?
Silvio Langereis
14

Vous pouvez essayer avec ça

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

Cela devrait le faire pour vous.

Hector Romero
la source
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
la source
7

Quelques personnes ont un exemple utilisant setAttribute que j'aime. Cependant, cela suppose que vous n'avez actuellement aucun style défini. Je ferais peut-être quelque chose comme:

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

Ou faites-en une fonction d'assistance comme celle-ci:

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

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

Cela garantit que vous pouvez y ajouter des styles en continu et ne supprimera aucun style actuellement défini en ajoutant toujours aux styles actuels. Il ajoute également un point-virgule supplémentaire pour que s'il manque un style, il en ajoutera un autre pour s'assurer qu'il est entièrement délimité.

stuyam
la source
3

vous devriez créer une classe css .my_stylepuis utiliser.addClass('.mystyle')

bennett_an
la source
3

Si vous ne souhaitez pas ajouter chaque ligne de propriété css ligne par ligne, vous pouvez faire quelque chose comme ceci:

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
la source
1

Utilisez cssText

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

Essayez quelque chose comme ça

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

Faites-le avec css maintenant que vous avez créé la classe. .well {largeur: 330px; float: gauche; }

Seth K
la source