Re: closure and multiple frames

"bennybobw" <[email protected]>
Newsgroups gmane.comp.web.dom.wdf
Message-ID <[email protected]>
Thanks for your help.  The function is working now using 'this'.  I 
had this in the original code, but it wasn't working correctly 
because I needed to specify that the clickFix function is in running 
the top frame.
...
newAnchor.index=j;
newAnchor.onClick= top.clickFix; //added top.
...

function clickFix() {
     printResponsibilities(this.index); 
}

--- In [email protected], "Lon Boonen" <lon@q...> wrote:
>
> This is a mess.
>  
> First of all install Microsoft's Debugger and try debugging your 
own code. Or use Mozilla's Debugger if you must.
>  
> Second clickFix is getting its event from window.event. But that 
window is not the window where the event was fired.
>  
> Third inside clickFix you can refer to 'this' to get the element 
that fired the event.
>  
> Fourth you are boolean-comparing your zero-based index prop. Wrong 
because 0 is false.
>  
> Fifth take small steps and check every step. The fact that you have 
at least four problems in your code means you've taken at least three 
steps too many at once.
>  
> Good luck, Lon
> 
> ________________________________
> 
> Van: [email protected] namens bennybobw
> Verzonden: ma 12-12-2005 14:42
> Aan: [email protected]
> Onderwerp: [wdf-dom] Re: closure and multiple frames
> 
> 
> 
> Okay, I've changed onMouseClick to onclick (that somehow got changed
> when I rewrote the code).  I put in this new code, but when I put
> alert(srcEl) in clickFix, it returns the error message "index is 
null
> or not an object."  I think part of the problem is that I can't
> directly pass the variable to clickFix--that is, if I put brackets 
in
> the onclick declaration, the function is executed and the result is
> registered to onclick.  I have to access the variable from the
> clickFix function, which is outside the for loop.  The new code 
looks
> like this (but it doesn't work).
> 
> 
> for (j=0;j<resp.length;j++) {
> ...
> var newDiv=currentDoc.createElement('div');
> var newAnchor=currentDoc.createElement('a');
> //note: currentDoc=iframe.document
> newAnchor.innerHTML=resp[j].firstChild.nodeValue;
> newAnchor.index=j;
> newAnchor.onclick= top.clickFix;
> ... //append the anchor to the div, append div to body, etc.
> }
> 
> 
> function clickFix(e) {
>     var srcEl =window.event?window.event.srcElement:e?e.target:null;
>     alert(srcEl.index);
>     while(srcEl && !srcEl.index) srcEl = srcEl.parentNode;
>     if(!srcEl) return;
>     printResponsibilities(srcEl.index);
> }
> 
> Thanks,
> bennybobw
> 
> 
> --- In [email protected], Pavel Dudrenov <dudrenov@g...> 
wrote:
> >
> > This is wrong:
> >
> > function clickFix() {
> >
> >        printResponsibilities(this.index);
> > }
> >
> > The this keyword might not be what you think it is. Not all 
browsers
> > pass this as the element on a event. This should work though:
> >
> > function clickFix(e) {
> >        var srcEl = window.event?window.event.srcElement:e?
> e.target:null;
> >        while(srcEl && !srcEl.index) srcEl = srcEl.parentNode;
> >
> >         if(!srcEl) return;
> >
> >        printResponsibilities(srcEl.index);
> > }
> >
> > Also change the .index property to some other name there might be 
an
> > element that already has index property.
> >
> > Hope that helps,
> > Pavel
> >
> >
> 
> 
> 
> 
> 
> 
> Unsubscribe
> [email protected]
> 
> List info
> http://www.quirksmode.org/dom/list.html
> Yahoo! Groups Links
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> [Non-text portions of this message have been removed]
>






------------------------ Yahoo! Groups Sponsor --------------------~--> 
Get fast access to your favorite Yahoo! Groups. Make Yahoo! your home page
http://us.click.yahoo.com/dpRU5A/wUILAA/yQLSAA/9rHolB/TM
--------------------------------------------------------------------~-> 

Unsubscribe
[email protected]

List info
http://www.quirksmode.org/dom/list.html 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/wdf-dom/

<*> To unsubscribe from this group, send an email to:
    [email protected]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.