Thank you for your reply. I did know that I had to add the element before calling those methods, but sure enough I had forgotten that the panel in line 4 hadn't been added yet, as it was part of a cascade of constructors. Your reply helped me point that one out.
Thanks, G. On Jul 1, 10:55 am, Daniel Simons <daniel.simo...@gmail.com> wrote: > i) The problem here is that you are trying to reference an element that has > not yet been added to the dom. > > Check where you are adding the element...most likely a you have a call to > RootPanel.get().add(elem). Be sure that this happens before calling > getElementsById(). > > ii) I prefer to create my own Generic Widgets by extending ComplexPanel. > This is helpful because you can pass in any tag name that you'd like: > > public class ContainerTag extends ComplexPanel{ > public ContainerTag(String tagName) { > setElement(DOM.createElement(tagName)); > } > > } > > Then you can use: ContainerTag div = new ContainerTag("div"); > > Daniel > > On Thu, Jul 1, 2010 at 12:13 PM, giacomo <gia.ghid...@gmail.com> wrote: > > Hi everyone! > > > SUMMARY > > ========= > > > I'm facing a problem with Document.get().getElementById(String) (in > > Java) and $doc.getElementById(String) (in JavaScript) returning nulls. > > > My design goal is to define a <div> element in the Java code and add > > it to the document, so that I can then retrieve it in the JSNI method > > and use JavaScript libraries to draw stuff within it. > > > DESCRIPTION > > ============ > > > To make problem description simpler, here is my GWT code: > > > 1 protected void draw() { > > 2 String id = "divId"; > > 3 HTML divElement = new HTML("<div id=\'" + id + "\'>Hello > > World</ > > div>"); > > 4 getChartPanel().add(divElement); //getChartPanel() returns > > a Panel > > 5 Window.alert("The element ID is " + id); > > 6 Element element = Document.get().getElementById(id); > > 7 Window.alert("The GWT element ID is " + element.getId()); > > 8 drawJS(id); > > 9 } > > 10 > > 11 public static native void drawJS(String divID) /*-{ > > 12 $wnd.alert("The JS element ID is " + divID); > > 13 var chartPanel1 = $doc.getElementById(divID); > > 14 $wnd.alert("The chart panel is " + chartPanel1); > > 15 var chartPanel2 = document.getElementById(divID); > > 16 $wnd.alert("The chart panel is " + chartPanel2); > > 17 chartPanel.innerHTML("Hello, World!"); > > 18 }-*/; > > > When the draw() method is called I get the following: > > > i) Window on line 5 pops up with "The element ID is divId"; > > ii) Window on line 7 pops up with "The GWT element ID is null"; > > iii) Window on line 12 pops up with "The JS element ID is divId"; > > iv) Window on line 14 pops up with "The chart panel is null"; > > v) Window on line 16 pops up with "The chart panel is null"; and > > vi) A JavaScriptException is raised in development mode at line 17: > > > ----------------------------------------------------------- > > 09:50:16.235 [ERROR] [sensor_network] Uncaught exception escaped > > com.google.gwt.core.client.JavaScriptException: (ReferenceError): > > chartPanel is not defined > > fileName:http://127.0.0.1:8888 > > lineNumber: 7 > > stack: ("divId")@http://127.0.0.1:8888:7 > > @:0 > > ----------------------------------------------------------- > > > ANALYSIS > > ======== > > > I inspected the Web page with FireBug and the <div> element with id = > > "divId" DOES exist after it is added in the Java code. However, > > neither the Java nor the JavaScript methods are able to retrieve it. > > > QUESTIONS > > ========== > > > i) What am I doing wrong and how do I fix it? > > > ii) Is there a better way to add a <div> element in Java and pass it > > to a JavaScript method, so that the latter can use it to add stuff > > (e.g., JavaScript-based charts) in it? > > > Thank you. > > > G. > > > -- > > You received this message because you are subscribed to the Google Groups > > "Google Web Toolkit" group. > > To post to this group, send email to google-web-tool...@googlegroups.com. > > To unsubscribe from this group, send email to > > google-web-toolkit+unsubscr...@googlegroups.com<google-web-toolkit%2bunsubscr...@googlegroups.com> > > . > > For more options, visit this group at > >http://groups.google.com/group/google-web-toolkit?hl=en. -- You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to google-web-tool...@googlegroups.com. To unsubscribe from this group, send email to google-web-toolkit+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.