Web-Tor Medlem sedan nov. 2000 13 890 inlägg Trådstart 27 sep. 2005 09:16 #1 Skulle vilja ha en funktion som letar igenom alla frames på en sida efter en frame med ett visst namn och sedan returnerar den framen som ett objekt.
Det kan finnas nästlade framar på sidan.
Så här tänkte jag först men det funkar ju inte eftersom else-satsen skriver över objektet efter att man hittat rätt frame.
function call_getFrame(strFrame){
return (call_getFrame_recurse(window.top,strFrame));
}
function call_getFrame_recurse(objFrame,strFrame){
for(var i=0;i<objFrame.frames.length;i++){
if(objFrame.frames[i].name==strFrame){
return objFrame.frames[i];
}else{
call_getFrame_recurse(objFrame.frames[i],strFrame)
}
}
}
// *** Anrop
alert(call_getFrame("frame_content"));
P Peter S Medlem sedan dec. 2002 5 483 inlägg function call_getFrame(t, s){
for (var i = 0; i < t.frames.length; ++i){
if (t.frames[i].name == s){
return t.frames[i];
}
if (t.frames[i].length > 0){
call_getFrame(t.frames[i], s);
}
}
return null;
}
// Kom ihåg att kolla för null-värde i retur
var fr = null;
if (fr = call_getFrame(top, "frame_content")){
// ok, använd fr här
}
Ingen större skilland mot din kod med andra ord
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Jag får tillbaka null hur jag än gör?
P Peter S Medlem sedan dec. 2002 5 483 inlägg Jag har nu skapat ett ganska komplext ramsystem och testat funktionen. Resultatet är att den hittar samtliga ramar.
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Med nästlade frames menar jag alltså att jag har frames som innehåller frames. Svårt att förklara men om du testas dom här sidorna förstår du nog.
P Peter S Medlem sedan dec. 2002 5 483 inlägg function call_getFrame(t, s){
for (var i = 0; i < t.frames.length; ++i){
if (t.frames[i].name == s){
return t.frames[i];
}
if (t.frames[i].length > 0){
return call_getFrame(t.frames[i], s);
}
}
return null;
}
Web-Tor Medlem sedan nov. 2000 13 890 inlägg Ahhh! Ett litet return som fattades.