Hi Juan, I've only skimmed this, so apologies if this comment is completely off- base, but you mentioned tables in there somewhere although I don't see any tables in the HTML snippets. Do all of your tables have the appropriate TBODY elements in them? I can see that being a difference between browsers, particularly depending on what your DOCTYPE is. It's a surprisingly well-kept secret that TR cannot appear directly within TABLE, you must have a TBODY (or THEAD or TFOOT) in between:
<table> <tr> <td>This</td> </tr> <tr> <td>is</td> </tr> <tr> <td>WRONG</td> </tr> </table> <table> <tbody> <tr> <td>This</td> </tr> <tr> <td>is</td> </tr> <tr> <td>right</td> </tr> </tbody> </table> Firefox will silently insert one for you; I don't know what IE's behavior is (whether it inserts one or just doesn't worry about it). Again, apologies if this is completely off-base. Oh, and separately: If you find yourself writing: someElement.up().up() you can use someElement.up(1) ...instead. (Yes, really 1, not 2 -- up() equals up(0), so up().up() equals up(1). *Terrible* API choice, but there we are. Details in the old API docs[1].) [1] http://prototypejs.org/api/element/up Good luck, -- T.J. Crowder tj / crowder software / com www.crowdersoftware.com On Sep 21, 11:08 am, Juan Diego <juandieg...@gmail.com> wrote: > Damn IE. Ok thanks. I am going to take away elements from the page > where is the conflict. Thanks for your time. > > Juan Diego > > On Sep 21, 4:49 am, Kevin Porter <k...@9ballpool.co.uk> wrote: > > > > > Sorry, I didn't try your page, I was just using the test page I built to > > test your code. > > > You're right, IE8 gives an error on your page. > > > It's complaining about this line: > > > var e2 = element.up().up().up().next(); > > > You'll just have to debug - please find out exaclty what you get for > > element.up(), element.up().up() etc. At some point > > it's behaviour is differing from Firefox - when you find out what that > > is we'll try and figure why the behaviour is different. > > > One thing I would suggest trying (from previous IE LI difficulties) is > > to remove all whitespace from the UL/LI markup. However, the docs for > > next() and up() say that whitespace nodes are totally ignored by these > > functions, so that may not be the problem but it's probably worth a > > minute to try. > > > Alternatively, you could try using a css rule in up() > > (http://www.prototypejs.org/api/element/up) , eg: > > > var e2 = element.up('div.lista_izq').next(); > > > Let me know how you get on. If those alternative suggestions don't work, > > we really need you to debug to find out at exactly which point the IE8 > > behaviour is differing from that of normal browsers. > > > regards, > > > - Kev > > > Juan Diego wrote: > > > It is still not working. I am going to try in another machine. I get > > > this error because the browser is in spanish. El objeto no acepta > > > esta propiedad o metodo. Which means the object does not accept this > > > property or method in the lines 15 and 28. > > > > On Sep 21, 4:23 am, Kevin Porter <k...@9ballpool.co.uk> wrote: > > > >> It works for me in IE8! > > > >> Kill IE8, re-open it and try again. > > > >> If it still doesn't work, what error are you getting? > > > >> regards, > > > >> - Kev > > > >> Juan Diego wrote: > > > >>> I cleaned up a little my code it still doesnt work in IE8 > > > >>> this is the code > > >>> function reemplazarX(){ > > >>> var element = this; > > >>> //var e2 =element.getOffsetParent(); > > >>> var e2 =element.up().up().up().next(); > > >>> //alert(e2); > > >>> e2.setStyle({ > > >>> backgroundColor: '#020506', > > >>> opacity: 1.0, > > >>> borderLeft:'1px #FFF solid' > > >>> }); > > >>> e2.innerHTML= element.next().innerHTML; > > > >>> } > > >>> function borrar(){ > > >>> var element = this; > > >>> //var e2 =element.getOffsetParent(); > > >>> var e2 =element.up().up().up().next(); > > >>> e2.innerHTML= ""; > > >>> e2.setStyle({ > > >>> backgroundColor: '#000', > > >>> opacity: 0.0 > > >>> }); > > >>> } > > > >>> On Sep 21, 3:59 am, Juan Diego <juandieg...@gmail.com> wrote: > > > >>>> I dont want the LI elements. Here is how it is setup, > > > >>>> <div class="lista_izq"> > > >>>> <ul> > > >>>> <li><div class="text">text1</div> > > >>>> <div class="hidden_text">hidden1</div> > > >>>> </li> > > >>>> <li><div class="text">text2</div> > > >>>> <div class="hidden_text">hidden2</div> > > >>>> </li> > > >>>> </ul> > > >>>> </div> > > >>>> <div class="lista_der"> </div> > > >>>> I want display my message in lista_der. So that is why i use all > > >>>> those up(), i guess I can use 4 up and one next. > > > >>>> On Sep 21, 3:50 am, Kevin Porter <k...@9ballpool.co.uk> wrote: > > > >>>>> First things first - you've got four up()s in a row, which is likely > > >>>>> to > > >>>>> return you the document or window object. > > > >>>>> If you want the LI element you only need one up() from the div. > > > >>>>> regards, > > > >>>>> - Kev > > > >>>>> JuanDiegowrote: > > > >>>>>> I used up() and didnt work, it is the same error. > > >>>>>> Here is the test page > > >>>>>>http://pts.raidenenergy.com/index.php?option=com_content&view=categor... > > > >>>>>> and this is the code. > > > >>>>>> function listas(){ > > >>>>>> $$('div.texto').each(function(s) { Event.observe(s, 'mouseover', > > >>>>>> reemplazarX)}); > > >>>>>> $$('div.texto').each(function(s) { Event.observe(s, 'mouseout', > > >>>>>> borrar)}); > > >>>>>> }; > > > >>>>>> function reemplazarX(){ > > >>>>>> var element = this; > > >>>>>> //var e2 =element.getOffsetParent(); > > >>>>>> var e2 =element.up().up().up().up(); > > >>>>>> //alert(e2); > > >>>>>> e2.childElements()[2].setStyle({ > > >>>>>> backgroundColor: '#020506', > > >>>>>> opacity: 1.0, > > >>>>>> borderLeft:'1px #FFF solid' > > >>>>>> }); > > >>>>>> e2.childElements()[2].innerHTML= element.next().innerHTML; > > > >>>>>> } > > >>>>>> function borrar(){ > > >>>>>> var element = this; > > >>>>>> //var e2 =element.getOffsetParent(); > > >>>>>> var e2 =element.up().up().up().up(); > > >>>>>> e2.childElements()[2].innerHTML= ""; > > >>>>>> e2.childElements()[2].setStyle({ > > >>>>>> backgroundColor: '#000', > > >>>>>> opacity: 0.0 > > >>>>>> }); > > >>>>>> } > > > >>>>>> On Sep 18, 5:27 am, david <david.brill...@gmail.com> wrote: > > > >>>>>>> HiJuan, > > > >>>>>>> IE has much trouble with table. So not surprinsing that IE doesn't > > >>>>>>> work as expected. > > > >>>>>>> -- > > >>>>>>> david > > > >>>>>>> On 17 sep, 19:10,JuanDiego<juandieg...@gmail.com> wrote: > > > >>>>>>>> Thanks. > > >>>>>>>> One more thing, I am doing this inside a joomla so those divs are > > >>>>>>>> inside a table inside the"content" module of joomla. When ever I > > >>>>>>>> use > > >>>>>>>> alert(e2) I thought i was getting the table, because it said > > >>>>>>>> something > > >>>>>>>> about "table element", so for some reason in internet explorer it > > >>>>>>>> goes > > >>>>>>>> directly to the body. That is what it is happening right? I am > > >>>>>>>> going > > >>>>>>>> to try with teh up() function. > > > >>>>>>>> Ken I am using [2] because there is some text with <p></p> that i > > >>>>>>>> though it wasnt important. But thanks for noticing. > > > >>>>>>>> Juan > > > >>>>>>>> On Sep 17, 6:08 am, david <david.brill...@gmail.com> wrote: > > > >>>>>>>>> Hi Kev, > > > >>>>>>>>> the getOffSetParent() return the "closest positioned ancestor", > > >>>>>>>>> and if > > >>>>>>>>> not found return the body ! > > >>>>>>>>> That's why for some element, parent is not positionned (CSS > > >>>>>>>>> position > > >>>>>>>>> property) and it return the body element. > > > >>>>>>>>> As you say, up() is much more appropriate in this case. > > > >>>>>>>>> -- > > >>>>>>>>> david > > > >>>>>>>>> On 17 sep, 10:38, Kevin Porter <k...@9ballpool.co.uk> wrote: > > > >>>>>>>>>> HiJuan, > > > >>>>>>>>>> For me, I get the error at "e2.childElements()[2].setStyle...". > > >>>>>>>>>> e2 at that point is the body element. Is that what you want? > > >>>>>>>>>> I guess you want the LI element? If so, maybe .up() would be a > > >>>>>>>>>> better > > >>>>>>>>>> choice than .getOffSetParent()? > > >>>>>>>>>> Also, you probably want to use "[1]" instead of "[2]" to > > >>>>>>>>>> reference the > > >>>>>>>>>> second element of the LI. (it's > > >>>>>>>>>> a zero-indexed array). > > > >>>>>>>>>> regards, > > > >>>>>>>>>> - Kev > > > >>>>>>>>>> JuanDiegowrote: > > > >>>>>>>>>>> Ok, so I cleaned up my code. I used "each" instead of a For > > >>>>>>>>>>> loop, so > > >>>>>>>>>>> now it works in every Browser except IE8. I havent tested it in > > >>>>>>>>>>> other > > >>>>>>>>>>> versions of IE. Like 6 o 7. > > >>>>>>>>>>> So here is the code. > > > >>>>>>>>>>> function listas(){ > > >>>>>>>>>>> $$('div.texto').each(function(s) { Event.observe(s, > > >>>>>>>>>>> 'mouseover', > > >>>>>>>>>>> reemplazarX)}); > > >>>>>>>>>>> $$('div.texto').each(function(s) { Event.observe(s, > > >>>>>>>>>>> 'mouseout', > > >>>>>>>>>>> borrar)}); > > >>>>>>>>>>> }; > > > >>>>>>>>>>> function reemplazarX(){ > > >>>>>>>>>>> var element = this; > > >>>>>>>>>>> var e2 =element.getOffsetParent(); > > >>>>>>>>>>> alert(e2); > > >>>>>>>>>>> e2.childElements()[2].setStyle({ > > >>>>>>>>>>> backgroundColor: '#020506', > > >>>>>>>>>>> opacity: 1.0, > > >>>>>>>>>>> borderLeft:'1px #FFF solid' > > >>>>>>>>>>> }); > > >>>>>>>>>>> e2.childElements()[2].innerHTML= element.next().innerHTML; > > > >>>>>>>>>>> } > > >>>>>>>>>>> function borrar(){ > > >>>>>>>>>>> var element = this; > > >>>>>>>>>>> var e2 =element.getOffsetParent(); > > >>>>>>>>>>> e2.childElements()[2].innerHTML= ""; > > >>>>>>>>>>> e2.childElements()[2].setStyle({ > > >>>>>>>>>>> backgroundColor: '#000', > > >>>>>>>>>>> opacity: 0.0 > > >>>>>>>>>>> }); > > >>>>>>>>>>> } > > > >>>>>>>>>>> I get an error on Line 14. "The object does not accept this > > >>>>>>>>>>> property > > >>>>>>>>>>> or method" So the problem seems to be in this line var e2 > > >>>>>>>>>>> =element.getOffsetParent(); > > >>>>>>>>>>> With getOffsetParent function. > > > >>>>>>>>>>> This code works in opera, konqueror, safari, firefox. > > > >>>>>>>>>>> Thanks > > > >>>>>>>>>>> On Sep 17, 12:36 am,JuanDiego<juandieg...@gmail.com> wrote: > > > >>>>>>>>>>>> By the way i just found out that > > >>>>>>>>>>>> var > > >>>>>>>>>>>> lista_izq=$$('div.lista_izq')[i].childElements()[0].childElements > > >>>>>>>>>>>> (); > > >>>>>>>>>>>> is the problem in IE explorer. In opera works but in IE8 is a > > >>>>>>>>>>>> problem > > > >>>>>>>>>>>> On Sep 17, 12:19 am,JuanDiego<juandieg...@gmail.com> wrote: > > > >>>>>>>>>>>>> Hi I havent use javascript and prototype in a while so maybe > > >>>>>>>>>>>>> i am > > >>>>>>>>>>>>> doing something really wrong. > > >>>>>>>>>>>>> So here is what I am trying to do with prototype > > >>>>>>>>>>>>> I have a a few places in my page with a set of to divs divs, > > > ... > > > read more » --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Prototype & script.aculo.us" group. To post to this group, send email to prototype-scriptaculous@googlegroups.com To unsubscribe from this group, send email to prototype-scriptaculous+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/prototype-scriptaculous?hl=en -~----------~----~----~----~------~----~------~--~---