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;
}
Regards,
Allan Jensen
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/javascript/widgets/colour-picker/
Then the priority of it as compared to now would be *lower*, because
execution does not return after the assignment. So the *last* assignment
wins. So it should be moved down instead, but ...
> for (i=0; !x && i < d.forms.length; i++) {
> x = d.forms[i][n];
> }
>
> This is, however, the wrong solution [...]
... ACK, in double meaning.
PointedEars
--
Anyone who slaps a 'this page is best viewed with Browser X' label on
a Web page appears to be yearning for the bad old days, before the Web,
when you had very little chance of reading a document written on another
computer, another word processor, or another network. -- Tim Berners-Lee