У меня есть таблица стилей для div. Теперь я хочу изменить один атрибут div динамически с помощью js.
Как я могу это сделать?
document.getElementById("xyz").style.padding-top = "10px";
Правильно ли это?
У меня есть таблица стилей для div. Теперь я хочу изменить один атрибут div динамически с помощью js.
Как я могу это сделать?
document.getElementById("xyz").style.padding-top = "10px";
Правильно ли это?
Это почти правильно.
Так как -
является javascript-оператором, вы не можете действительно иметь это в именах свойств. Если вы устанавливаете, border
или что-то однословное, как это, ваш код будет работать нормально.
Однако то, что вам нужно запомнить для padding-top
и для любого имени переносимого атрибута, - это то, что в javascript вы удаляете дефис и делаете следующую букву в верхнем регистре, поэтому в вашем случае это будет paddingTop
.
Есть и другие исключения. JavaScript имеет несколько зарезервированных слов, поэтому вы не можете установить float
, например, это. Вместо этого в некоторых браузерах вам нужно использовать cssFloat
, а в других styleFloat
. Именно для таких расхождений рекомендуется использовать фреймворк, такой как jQuery, который обрабатывает несовместимости браузеров для вас...
В дополнение к другим ответам, если вы хотите использовать тире для свойств стиля, вы также можете использовать:
document.getElementById("xyz").style["padding-top"] = "10px";
Я разрешаю аналогичную проблему с:
document.getElementById("xyz").style.padding = "10px 0 0 0";
Надеюсь, что это поможет.
Предполагая, что у вас есть такой HTML:
<div id='thediv'></div>
Если вы хотите изменить атрибут стиля этого div, вы должны использовать
document.getElementById('thediv').style.[ATTRIBUTE] = '[VALUE]'
Замените [ATTRIBUTE]
нужным атрибутом стиля. Не забудьте удалить "-" и сделать следующую букву в верхнем регистре.
<сильные > Примеры
document.getElementById('thediv').style.display = 'none'; //changes the display
document.getElementById('thediv').style.paddingLeft = 'none'; //removes padding
document.getElementById("xyz").style.padding-top = '10px';
будет
document.getElementById("xyz").style["paddingTop"] = '10px';
Я бы рекомендовал использовать функцию, которая принимает идентификатор элемента и объект, содержащий свойства CSS, для обработки этого. Таким образом вы сразу пишете несколько стилей и используете стандартный синтаксис свойств CSS.
//function to handle multiple styles
function setStyle(elId, propertyObject) {
var el = document.getElementById(elId);
for (var property in propertyObject) {
el.style[property] = propertyObject[property];
}
}
setStyle('xyz', {'padding-top': '10px'});
Еще лучше сохранить стили в переменной, что упростит управление свойствами, например.
var xyzStyles = {'padding-top':'10px'}
setStyle('xyz', xyzStyles);
Надеюсь, что поможет
document.getElementById("xyz").setAttribute('style','padding-top:10px');
также выполнит эту работу.
Существует также функция style.setProperty
:
https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/setProperty
document.getElementById("xyz").style.setProperty('padding-top', '10px');
// version with !important priority
document.getElementById("xyz").style.setProperty('padding-top', '10px', 'important');