Показать сообщение отдельно
  #5 (permalink)  
Старый 08.10.2010, 00:54
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от TicTac
если создать атрибут появится свойство...
не появится (кроме IE)
var node = document.createElement("div");
node.setAttribute("test", "O_o");
alert("test" in node);


Сообщение от TicTac
А если добавить свойство - атрибут естественно не появится
да
var node = document.createElement("div");
node.test = 1;
alert(node.hasAttribute("test"));


Повторюсь: если браузеру известно какое-то свойство или атрибут, то при изменении и добавлении, значения возможно синхронизируются:
var node = document.createElement("div");
node.setAttribute("id", "_123");
alert(node.id);

var node = document.createElement("div");
node.id = "_123";
alert(node.getAttribute("id"));


Еще полезно помнить, что node.cloneNode копирует только атрибуты:
var node = document.createElement("div");
node.test = "O_o";

var clone = node.cloneNode(true);
alert(clone.test);

var node = document.createElement("div");
node.setAttribute("test", "O_o");

var clone = node.cloneNode(true);
alert(clone.getAttribute("test"));


Ну и ключевое отличие: атрибут всегда имеет строковое значение, свойство может принимать любое значение.
var node = document.createElement("input");
node.type = "checkbox";
node.setAttribute("checked", "checked");
alert(node.checked);

Последний раз редактировалось Octane, 08.10.2010 в 01:07.
Ответить с цитированием