Тема: Option.getValue
Показать сообщение отдельно
  #1 (permalink)  
Старый 14.08.2009, 19:26
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Option.getValue
Если у option атрибут value не определен, то браузер при отсылке формы вместо value использует содержимое тега. И, конечно же, функция собирающая данные с этой формы, например, для ajax-запроса, должна делать все симметрично. Нужно узнать определен ли value у option, первое что вспомнилось - hasAttribute, но он не захотел работать в IE, полез подсматривать во фреймворки и вот что нашел:

PrototypeJs (1.6.1_rc3 , str 2900):
hasAttribute: function(element, attribute) {
  attribute = Element._attributeTranslations.has[attribute] || attribute;
  var node = $(element).getAttributeNode(attribute);
  return !!(node && node.specified);
}

Может сложиться впечатление, что getAttributeNode добавляется самим фреймворком, но это не так, он (метод) даже на w3.org описан.


Jquery (1.3.2 , str 415):
return (elem.attributes.value || {}).specified ? elem.value : elem.text;



Оба варианта везде работают, вот теперь не знаю что выбрать.
Т. е. либо так:
return (elem.attributes.value || {}).specified ? elem.value : elem.text;
либо так:
return (elem.getAttributeNode('value') || {}).specified ? elem.value : elem.text;

Может кто-нибудь знает какой-либо недостаток (кроме разницы в производительности и количестве кода) у одного из вариантов?

Последний раз редактировалось Riim, 14.08.2009 в 19:29.
Ответить с цитированием