В DOM, это хорошо для обращения к атрибутам элемента как это:
var universe = document.getElementById('universe');
universe.origin = 'big_bang';
universe.creator = null;
universe.style.deterministic = true;
? Мое глубокое уважение к объектам и их конфиденциальности и моему смыслу, что дела могли бы идти ужасно неправильно, если я не осторожен, заставляет меня хотеть сделать все больше как это:
var universe = document.getElementById('universe');
if(universe.hasAttribute('origin')) then universe.origin = 'big_bang';
etc...
Действительно необходимо использовать те методы доступа? Конечно, может быть более или менее необходимо в зависимости от того, насколько бесспорный я - то, что элементы, которыми я управляю, будут иметь атрибуты, к которым я ожидаю их, но в целом парни DOM полагают, что это хорошо использует .notation, а не методы считывания и методы set?
Спасибо!
Для XML-документов вы должны использовать getAttribute
/ setAttribute
/ removeAttribute
и т. Д. Сопоставление свойств JavaScript с DOM отсутствует. атрибуты.
Для документов HTML вы можете использовать getAttribute
и другие для доступа к атрибутам, но лучше этого не делать, потому что IE6-7 испытывает трудности с этим. Свойства HTML DOM Level 2 не только надежнее, но и легче читаются.
Неясно, используете ли вы здесь документы XML или HTML. Ясно, что origin
не является атрибутом HTML; Подобные «настраиваемые» элементы и атрибуты не следует включать в HTML-документы. Но неясно, к чему относится universe.style.deterministic
; вы не получили бы сопоставление поиска в стиле CSS без атрибута HTML style
.
Да, все в порядке; -) Если в DOM есть атрибут, вы можете установить его или получить напрямую. {{ 1}} Никаких закрытых элементов, элементов только для чтения или чего-либо еще. Кстати, в JavaScript нет ключевого слова then.
Из-за проблем с кроссбраузерностью я всегда использую getAttribute и setAttribute:
if(!universe.getAttribute('origin'))
{
universe.setAttribute('origin', 'big_bang');
}
Я не помню подробностей, но у меня были проблемы со стилем свойств universe.origin и динамически создаваемыми элементами DOM.
Нет, это неправильно. Большинство свойств объектов DOM можно перезаписать. Вы не испортите поведение браузера, поскольку он не использует DOM API. Но вы испортите свои JS-скрипты, если они попытаются использовать перезаписанное свойство в его первоначальном значении.
Когда у меня есть несколько атрибутов для прикрепления к объекту (в отличие от одного флага или ссылки), я делаю это по-своему, - это создать собственный объект, а затем связать его с элементом DOM:
var Universe = {
origin: "big_bang",
creator: null,
style: { deterministic: true }
};
document.getElementById('universe')._universe = Universe;