17.06.2008, 06:34
|
Интересующийся
|
|
Регистрация: 11.04.2008
Сообщений: 17
|
|
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....
|
|
17.06.2008, 15:04
|
Профессор
|
|
Регистрация: 20.03.2008
Сообщений: 1,183
|
|
1. первый вариант. кроме случаев, когда нужно сохранять изменения при сериализации.
2. alert( new Image );
__________________
.ня
|
|
18.06.2008, 15:55
|
Интересующийся
|
|
Регистрация: 11.04.2008
Сообщений: 17
|
|
А 3?
а если я напишу:
var img = document.createElement('img');
img.src = '1';
img.setAttribute("src", "1");
Не могли бы вы сказать, что это...
Я так понимаю, когда нужно отчистить style полностью?
Цитата:
|
2. alert( new Image );
|
HTML Image Element... значит 2??
|
|
18.06.2008, 16:24
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
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);
Последний раз редактировалось Андрей Параничев, 18.06.2008 в 16:27.
|
|
18.06.2008, 16:28
|
Новичок на форуме
|
|
Регистрация: 19.02.2008
Сообщений: 9,177
|
|
Сообщение от Андрей Параничев
|
так как форма объект.свойство тут не поможет (так как свойство неизвестно)
|
объект[cвойство]
|
|
18.06.2008, 16:34
|
Интересующийся
|
|
Регистрация: 11.04.2008
Сообщений: 17
|
|
Андрей Параничев,
а вы не могли бы ответить именно на мой вопрос.
Что такое серилизация?
Как вернее
var img = new Image();
img.src = '1';
или
img.setAttribute("src", "1");
И тут:
var img = document.createElement('img');
img.src = '1';
или
img.setAttribute("src", "1");
|
|
18.06.2008, 17:56
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
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.
Формулировка ответа немного хромает, просто сейчас самочувствие плохое
Последний раз редактировалось Андрей Параничев, 18.06.2008 в 17:59.
|
|
18.06.2008, 18:03
|
Интересующийся
|
|
Регистрация: 11.04.2008
Сообщений: 17
|
|
Андрей Параничев,
1) Нет, думаю вам не стоит извинятся ничего страшного
А вообще вот вы написали примеры использования их то я знаю,
а какой вернее?
2) А насчет
var img = new Image();
как же вернее там через setAttribute или через прямую запись?
|
|
18.06.2008, 18:13
|
|
|
Регистрация: 21.02.2008
Сообщений: 1,250
|
|
Systemnik,
Тут нет верного, или неверного варианта. Как уже говорили, если вам не обязательно следить, чтобы в html представлении элемента все параметры были установлены наглядно, то используйте прямую запись. Т.е если этот кусок не будет записываться на диск/отправлятся на сервер, то используйте прямую запись. Я подозреваю, что прямая запись быстрее, ведь она не изменяет представления, хотя я могу ошибаться.
|
|
18.06.2008, 18:30
|
Интересующийся
|
|
Регистрация: 11.04.2008
Сообщений: 17
|
|
Андрей Параничев,
Согласен это я понял, но если все же говорить про стандарты кодинга ведь document.write() использовать можно, однако его недолюбливают.
Значит неважно как, ок спасибо!
|
|
|
|