Додайте вбудований стиль за допомогою Javascript


91

Я намагаюся додати цей код до динамічно створеного елемента div

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

Код, в якому створюється динаміка, divє

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

Моя ідея полягає в тому, щоб додати стиль після, < div class="well"але я не знаю, як це зробити.


1
Яка різниця? Вбудований стиль завжди матиме найвищу специфіку.
Amberlamps

оскільки div створюється динамічно, я не можу використовувати статику, оскільки це повний сценарій бібліотеки Javascript
Кертіс Крю

Можливо, це проблема XY. Чого ви намагаєтесь досягти? Це nFilter.style.width = '330px'; nFilter.style.float = 'left';те, що ви шукаєте?
Amberlamps

Відповіді:


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

Це повинно додати елементу вбудований стиль.


37

Ви можете зробити це безпосередньо за стилем:

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
Не стиль CSS, а третій варіант із setAttribute мені ідеально підходив.
milkersarac

16

Використання jQuery:

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

В іншому випадку:

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

повинні працювати


6
У цьому випадку не потрібно використовувати JQuery
Дхарман,

10
Він дає альтернативне рішення без JQuery. Не бачу необхідності голосувати проти.
Termato

Правильним, запитуваним ванільним рішенням JS є альтернативне рішення? Чи не той, про кого ніхто не просив, стосується бібліотеки, про яку ніхто не згадував?
Сільвіо Ланжерейс


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

Кілька людей мають приклад використання setAttribute, який мені подобається. Однак передбачається, що на даний момент у вас немає жодного стилю. Я б, можливо, зробив щось на зразок:

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

Або перетворіть його на допоміжну функцію наступним чином:

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

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

Це гарантує, що ви можете додавати стилі до нього безперервно, і він не буде видаляти будь-який встановлений на даний момент стиль, завжди додаючи до поточних стилів. Він також додає додаткову крапку з комою, так що якщо стиль коли-небудь відсутній, він додасть інший, щоб переконатися, що він повністю розмежований.


3

вам слід створити клас css, .my_styleа потім використовувати.addClass('.mystyle')


3

Якщо ви не хочете додавати кожну властивість 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);




-1

Зробіть це за допомогою css тепер, коли ви створили клас. .well {ширина: 330px; поплавок: ліворуч; }

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.