[Javascript] Javascript - radio buttons error
Andrew Clover
and-babble at doxdesk.com
Sat Mar 26 22:15:34 CST 2005
> but for some reason it does not work if there is only 1 radio
> button on the form...can anyone tell me why?
Because the JS (DOM Level 0) Form interface is badly designed.
var f= document.getElementById('someform');
var el= f.elements.elname;
If there is one field with name="elname", el will be an
HTMLInputElement. If there is more than one, el will be an Array of
HTMLInputElements. As Netscape's original JavaScript spec helpfully states:
You need to be aware of this situation in your code and know whether
myField refers to a single element or to an array of elements.
One way of guessing which is the case is to check for the existence of a
'length' attribute and assume that we have a single input if it's
undefined. This works as long as no-one starts adding 'length'
properties to form field objects. For example:
// Get list of field elements by name - always return Array/NodeList
//
function getFieldsByName(form, name) {
var el= form.elements[name];
if (!el) return new Array();
if (!el.length) return new Array(el);
return el;
}
--
Andrew Clover
mailto:and at doxdesk.com
http://www.doxdesk.com/
More information about the Javascript
mailing list