Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.06.2008, 06:34
Интересующийся
Отправить личное сообщение для Systemnik Посмотреть профиль Найти все сообщения от Systemnik
 
Регистрация: 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....
Ответить с цитированием
  #2 (permalink)  
Старый 17.06.2008, 15:04
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

1. первый вариант. кроме случаев, когда нужно сохранять изменения при сериализации.

2. alert( new Image );
__________________
.ня
Ответить с цитированием
  #3 (permalink)  
Старый 18.06.2008, 15:55
Интересующийся
Отправить личное сообщение для Systemnik Посмотреть профиль Найти все сообщения от Systemnik
 
Регистрация: 11.04.2008
Сообщений: 17

Цитата:
2
А 3?
а если я напишу:
var img = document.createElement('img'); 
img.src = '1'; 
img.setAttribute("src", "1");

Цитата:
сериализации.
Не могли бы вы сказать, что это...
Я так понимаю, когда нужно отчистить style полностью?
Цитата:
2. alert( new Image );
HTML Image Element... значит 2??
Ответить с цитированием
  #4 (permalink)  
Старый 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.
Ответить с цитированием
  #5 (permalink)  
Старый 18.06.2008, 16:28
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от Андрей Параничев
так как форма объект.свойство тут не поможет (так как свойство неизвестно)
объект[cвойство]
Ответить с цитированием
  #6 (permalink)  
Старый 18.06.2008, 16:34
Интересующийся
Отправить личное сообщение для Systemnik Посмотреть профиль Найти все сообщения от Systemnik
 
Регистрация: 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");
Ответить с цитированием
  #7 (permalink)  
Старый 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.
Ответить с цитированием
  #8 (permalink)  
Старый 18.06.2008, 18:03
Интересующийся
Отправить личное сообщение для Systemnik Посмотреть профиль Найти все сообщения от Systemnik
 
Регистрация: 11.04.2008
Сообщений: 17

Андрей Параничев,
1) Нет, думаю вам не стоит извинятся ничего страшного
А вообще вот вы написали примеры использования их то я знаю,
а какой вернее?
2) А насчет
var img = new Image();
как же вернее там через setAttribute или через прямую запись?
Ответить с цитированием
  #9 (permalink)  
Старый 18.06.2008, 18:13
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

Systemnik,
Тут нет верного, или неверного варианта. Как уже говорили, если вам не обязательно следить, чтобы в html представлении элемента все параметры были установлены наглядно, то используйте прямую запись. Т.е если этот кусок не будет записываться на диск/отправлятся на сервер, то используйте прямую запись. Я подозреваю, что прямая запись быстрее, ведь она не изменяет представления, хотя я могу ошибаться.
Ответить с цитированием
  #10 (permalink)  
Старый 18.06.2008, 18:30
Интересующийся
Отправить личное сообщение для Systemnik Посмотреть профиль Найти все сообщения от Systemnik
 
Регистрация: 11.04.2008
Сообщений: 17

Андрей Параничев,
Согласен это я понял, но если все же говорить про стандарты кодинга ведь document.write() использовать можно, однако его недолюбливают.
Значит неважно как, ок спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
setAttribute dont work in IE7 february Events/DOM/Window 4 14.08.2008 19:51