setAttribute()
Вообщем пишу скрипт снега уже многое сделал и тут спросил одно человека советы по коду.
Вообщем он сказал что правильнее писать: document.getElementById("1").style.field = ''; а не: document.getElementById("1").setAttribute("style", "field: zn;"); как правильнее? И еще вот например я пишу: var img = new Image(); как вернее img.src = '1'; или img.setAttribute("src", "1"); мое предположение это 1 поскольку это не DOM объект. а если я напишу: var img = document.createElement('img'); img.src = '1'; img.setAttribute("src", "1"); ??? Мое предположение 2.... |
1. первый вариант. кроме случаев, когда нужно сохранять изменения при сериализации.
2. alert( new Image ); |
Цитата:
а если я напишу:
var img = document.createElement('img');
img.src = '1';
img.setAttribute("src", "1");
Цитата:
Я так понимаю, когда нужно отчистить style полностью? Цитата:
|
Systemnik,
setAttribute используется еще в случаях, когда вы, например, получаете с сервера атрибуты вашей картинки в виде объекта:
var myObject = {
width: 100,
height: 120,
alt: "Что-то"
}
Но вы, допустим, не знаете какие параметры должны придти с сервера, устанавливаете их сразу все. Для этого вам обязательно придется использовать setAttribute, так как форма объект.свойство тут не поможет (так как свойство неизвестно). Получится примерно следующее:
var img = document.createElement("img");
for(var i in myObject)
{
img.setAttribute(i, myObject[i]);
}
document.body.appendChild(img);
|
Цитата:
|
Андрей Параничев,
а вы не могли бы ответить именно на мой вопрос. Что такое серилизация? Как вернее var img = new Image(); img.src = '1'; или img.setAttribute("src", "1"); И тут: var img = document.createElement('img'); img.src = '1'; или img.setAttribute("src", "1"); |
Systemnik,
Извините, я сначала ошибочно написал. Сериализация это преставление (запись) объектов в виде, удобном для сохранения/передачи. Таким видом может быть html, xml, JSON, и т.д, но в данном случае рассматривается сериализация в html DOM-объекта. Вот пример того, для чего может использоваться setAttribute, т.е когда нужно сохранение параметров при сериализации:
// Создадим элемент <span>
var element = document.createElement("SPAN");
// Присвоим ему параметр id через setAttribute()
element.setAttribute('id', '1');
// А параметр id2 - через прямую запись
element.id2 = '2';
// Оба параметра доступны из JavaScript:
alert([element.id, element.id2]);
// Теперь создадим <div> и вставим в него наш <span>
var element2 = document.createElement("DIV");
element2.appendChild(element);
// И посмотрим его html код:
alert(element2.innerHTML); // <span id="1"></span>
// Другими словами, если element2.innerHTML сохранить
// на диск/передать на сервер, то параметр id не запишется,
// в отличии от параметров записанных через setAttribute.
Формулировка ответа немного хромает, просто сейчас самочувствие плохое :) |
Андрей Параничев,
1) Нет, думаю вам не стоит извинятся ничего страшного ;) А вообще вот вы написали примеры использования их то я знаю, а какой вернее? 2) А насчет var img = new Image(); как же вернее там через setAttribute или через прямую запись? |
Systemnik,
Тут нет верного, или неверного варианта. Как уже говорили, если вам не обязательно следить, чтобы в html представлении элемента все параметры были установлены наглядно, то используйте прямую запись. Т.е если этот кусок не будет записываться на диск/отправлятся на сервер, то используйте прямую запись. Я подозреваю, что прямая запись быстрее, ведь она не изменяет представления, хотя я могу ошибаться. |
Андрей Параничев,
Согласен это я понял, но если все же говорить про стандарты кодинга ведь document.write() использовать можно, однако его недолюбливают. Значит неважно как, ок спасибо! |
| Часовой пояс GMT +3, время: 11:45. |