10 ответов:
Это почти правильно.
Так как
-является оператором javascript, вы не можете действительно иметь это в именах свойств. Если бы вы устанавливали вместо этогоborderили что-то односложное, ваш код работал бы просто отлично.Однако, вещь, которую вы должны помнить для
padding-top, и для любого имени атрибута с дефисом, заключается в том, что в javascript вы удаляете дефис и делаете следующую букву прописной, так что в вашем случае это будетpaddingTop.Есть некоторые другие исключения. В JavaScript есть несколько зарезервированных слов, поэтому вы не можете установить
float, например. Вместо этого в некоторых браузерах нужно использоватьcssFloat, а в другихstyleFloat. Именно для таких несоответствий рекомендуется использовать фреймворк, такой как jQuery, который обрабатывает несовместимости браузера для вас...
В дополнение к другим ответам, Если вы хотите использовать тире notition для свойств стиля, вы также можете использовать:
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.setPropertyfunction:
https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/setPropertydocument.getElementById("xyz").style.setProperty('padding-top', '10px'); // version with !important priority document.getElementById("xyz").style.setProperty('padding-top', '10px', 'important');
Удивило , что я не увидел ниже селектор запросов способ решения,
document.querySelector('#xyz').style.paddingTop = "10px"CSSStyleDeclaration решения, пример принятого ответа
document.getElementById('xyz').style.paddingTop = "10px";
document.getElementById('id').style = 'left: 55%; z-index: 999; overflow: hidden; width: 0px; height: 0px; opacity: 0; display: none;';Работает на меня
Comments