В этом примере
<form id="form1">
<input type="text" name="style">
</form>
<form id="form2">
<input type="text" name="id">
</form>
вы не можете получить доступ к объявлению стиля form1 или к идентификатору form2, поскольку именованные входы затеняют соответствующие свойства.
То же самое относится и к другим свойствам
Есть какие-нибудь обходные пути?
Редактировать: getAttribute
работает для id
, очевидно.Но не для style
, childNodes
, tagName
и т. Д.
Я ищу что-то вроде этого:
getDomProp = (function() {
if (window.__lookupGetter__) {
var cleanForm = document.createElement('form');
return function(form, key) {
// works in Firefox, fails in Opera:
return cleanForm.__lookupGetter__(key).call(form);
};
} else if (Object.getOwnPropertyDescriptor) {
return function(form, key) {
// does not work at all:
// return Object.getOwnPropertyDescriptor(cleanForm, key).get.call(form);
}
} else {
throw 'Not supported.';
}
})();
Fiddle