Hi All, This is not the original question, but to insert elements in the DOM, you should do: $('myContent').innerHTML='<div ...... </div>'
It's faster in execution than creating an element with a new.Element a set each needed property. -- david On 7 déc, 12:00, "Alex McAuley" <webmas...@thecarmarketplace.com> wrote: > There is a known bug in IE8 regarding new Element and adding the class toit > in the scope... > > To overcome it simply use addClassName('My-Class'); after or instead of the > scope > > Alex Mcauleyhttp://www.thevacancymarket.com > > ----- Original Message ----- > From: "ColinFine" <colin.f...@pace.com> > To: "Prototype & script.aculo.us" <prototype-scriptaculous@googlegroups.com> > Sent: Monday, December 07, 2009 10:53 AM > Subject: [Proto-Scripty] Re: document.write() vs Element/appendChild() > > On Dec 4, 10:36 pm, fma <f...@gbiloba.org> wrote: > > Ok, I found something... > > > If I look at the HTML tree in the IE debugger, on the left panel I > > can't see any 'class' attribute. However, it does appear on the right > > panel (called Attributs), with the correct value. But IE does not > > seems to use it. I found that I can add an attribute to the div in the > > left panel. So I tried to add an attribute named 'class', and I set > > its value: this fixes the problem, and IE can apply the CSS!!! > > > Then, I tried something else... I used the old-style to build the DOM > > tree: > > > this.content = document.createElement('div'); > > Element.extend(this.content); > > this.content.setAttribute('id', this._name + "_content"); > > this.content.setAttribute('class', "fullContent"); > > document.body.appendChild(this.content); > > I don't know if this is relevant to the problem, but you don't need to > use 'setAttribute' for built-in attributes of HTML element: > > this.content.id = this._name + "_content"; > > avoids an unnecessary function call. > > For the DOM attribute 'class', the Javascript binding requires you to > use 'className', because 'class' is a reserved word in Javascript: > > this.content.class = "fullContent"; > > (or, using a Prototype method) > this.content.addClassName('fullContent'); > This is not quite the same, because if you already have a class on the > element, this will add the new class, whereas the simple assignment > will replace it. But since you have just created the element, there is > no difference. > > > instead of the new-style: > > > this.content = new Element('div', {'id': this._name + "_content", > > 'class': "fullContent"}); > > > and it worked!!! > > > At first, I didn't put the quotes arround the attributes names, in the > > hash: > > > this.content = new Element('div', {id: this._name + "_content", > > class: "fullContent"}); > > > but IE does not like this syntax (it asks for an int or a string). But > > as you can see, giving a string does not seems to work well. > > IE objects (correctly) to your using the Javascript reserved word > 'class' as an object key: Firefox is more lax and lets it through. > 'id' will work without quotes. > > > Am I doing something wrong with the new-style method? Or is it a known > > issue in Prototype? > > I don't know. Your example seems to match that in the Prototype > documentation. I would try it with 'className' instead of 'class' and > see whether this works. > > -- > > 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-scriptacul...@googlegroups.com. > To unsubscribe from this group, send email to > prototype-scriptaculous+unsubscr...@googlegroups.com. > For more options, visit this group > athttp://groups.google.com/group/prototype-scriptaculous?hl=en. -- 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-scriptacul...@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.