Задавать 4 вопроса в одном не является хорошей идеей ,
Есть ли особые ситуации, когда предпочтительнее?
Как правило, настройка собственности предпочтительнее, поскольку она проще и исторически более надежна.
Быстрее, чем другой?
Логически, установка свойства должна быть быстрее, чем вызов метода, но разница, вероятно, будет незначительной для нерелевантности.
Как они отличаются?
setAttribute устанавливает значение атрибута. Атрибуты отражаются в свойствах. Исторически установка атрибута не всегда меняла свойство и наоборот.
Почему у этого даже есть 2 способа сделать это?
Атрибуты существуют в HTML перед javascript, вы можете думать о них как о том, что находится в разметке. Свойства DOM были главным образом отражениями атрибутов. Например. когда-то время атрибут значения элемента управления формы отражал значение по умолчанию, тогда как свойство value отражало его фактическое значение. Но многие из этих различий уходят.
Установка свойства, которое не является отражением стандартного атрибута с одинаковым именем, не создает атрибут этого имени (кроме нескольких исключений, свойство имеет другое имя для связанного атрибута, такого как class/className и для/htmlFor).
Есть много статей по атрибутам против свойств, многие были повреждены JQuery атра против реквизита вопросов, но если вы читаете достаточно, вы получите картину.
'document.getElementById (" id "). SetAttribute (" class ") =" newClass "является синтаксической ошибкой; подход setter: 'document.getElementById (« id »). setAttribute (« class »,« newClass »)' –
Прошу прощения. моя вина. – brumbrum
Возможный дубликат http://stackoverflow.com/questions/3919291/when-to-use-setattribute-vs-attribute-in-javascript – Ramanlfc