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() использовать можно, однако его недолюбливают. Значит неважно как, ок спасибо! |
Systemnik, исчерпывающие ответы http://xpoint.ru/know-how/JavaScript/Atributyi?8
|
Kolyaj,
Спасибо. |
Часовой пояс GMT +3, время: 06:22. |