On Thu, 28 Aug 2008 16:41:35 +0200, Frowning Freezer wrote:
Quote:
How can the function below be rewritten to prioritize form fields instead of
other objects with the same name?
>
For example I want getele("title") to retrieve the form field named "title"
instead of document.title - how do I get it to do that?
>
function getele(n, d){
//argument 'n' is the name of the object you want to get
//argument 'd' is the document object, it is not required
var p,i,x;
if (!d) {
d = document;
}
if ( (p = n.indexOf("?")) 0 && parent.frames.length) {
d = parent.frames[n.substring(p+1)].document;
n = n.substring(0,p);
}
if ( !(x=d[n]) && d.all) {
x = d.all[n];
}
for (i=0; !x && i < d.forms.length; i++) {
x = d.forms[i][n];
}
for (i=0; !x && d.layers && i < d.layers.length; i++) {
x = getele(n, d.layers[i].document);
}
if (!x && d.getElementById) {
x = d.getElementById(n);
}
return x;
}
You can move the following if-block up in the function:
for (i=0; !x && i < d.forms.length; i++) {
x = d.forms[i][n];
}
This is, however, the wrong solution - rather than using this general
'getele' function which tries to find something somewhere in the document
with the appropriate element type/name attribute/id attribute, it would be
better to search only within the specific namespace required (form field
name, in this case).
--
Safalra (Stephen Morley)
A Colour Picker Widget For javascript
:
http://www.safalra.com/web-design/ja...colour-picker/