В DOM это в порядке для использования .notation для получения/установки атрибутов?

В 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?

Спасибо!

5
задан Ziggy 16 March 2010 в 04:22
поделиться

4 ответа

Для 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 .

3
ответ дан 14 December 2019 в 04:35
поделиться

Да, все в порядке; -) Если в DOM есть атрибут, вы можете установить его или получить напрямую. {{ 1}} Никаких закрытых элементов, элементов только для чтения или чего-либо еще. Кстати, в JavaScript нет ключевого слова then.

3
ответ дан 14 December 2019 в 04:35
поделиться

Из-за проблем с кроссбраузерностью я всегда использую getAttribute и setAttribute:

if(!universe.getAttribute('origin'))
{
    universe.setAttribute('origin', 'big_bang');
}

Я не помню подробностей, но у меня были проблемы со стилем свойств universe.origin и динамически создаваемыми элементами DOM.

2
ответ дан 14 December 2019 в 04:35
поделиться

Нет, это неправильно. Большинство свойств объектов DOM можно перезаписать. Вы не испортите поведение браузера, поскольку он не использует DOM API. Но вы испортите свои JS-скрипты, если они попытаются использовать перезаписанное свойство в его первоначальном значении.

Когда у меня есть несколько атрибутов для прикрепления к объекту (в отличие от одного флага или ссылки), я делаю это по-своему, - это создать собственный объект, а затем связать его с элементом DOM:

var Universe = {
  origin: "big_bang",
  creator: null,
  style: { deterministic: true }
};
document.getElementById('universe')._universe = Universe;
0
ответ дан 14 December 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: