如何在所有使用GWT的div元素上添加事件處理程序? 我試着下面的代碼,但窗口的警報將不會解僱了(但「etvoila」級設置):GWT:在所有div元素上添加事件處理程序
private NodeList<Element> pageDIVElements;
public void initDiv() {
MyDIVEventHandler handler = new MyDIVEventHandler();
pageDIVElements = Document.get().getElementsByTagName("div");
for (int i = 0; i < pageDIVElements.getLength(); i++) {
Element elem = pageDIVElements.getItem(i);
elem.addClassName("etvoila");
com.google.gwt.user.client.Element castedElem = (com.google.gwt.user.client.Element) elem;
DOM.setEventListener(castedElem, handler);
}
class MyDIVEventHandler implements EventListener {
private Element divElement;
@Override
public void onBrowserEvent(Event event) {
Window.alert("Yeepee");
if (event.equals(Event.ONMOUSEOVER)) {
Window.alert("ONMOUSEOVER");
divElement = Element.as(((NativeEvent) event).getEventTarget());
divElement.setPropertyString("background-color", "#C6D4E6");
} else if (event.equals(Event.ONMOUSEOUT)) {
divElement = Element.as(((NativeEvent) event).getEventTarget());
divElement.setAttribute("background-color", "");
}else if (event.equals(Event.ONCLICK)) {
divElement = Element.as(((NativeEvent) event).getEventTarget());
divElement.setAttribute("background-color", "");
Window.alert("ONCLICK");
}
}
}
有什麼不對這種方法嗎?
如何在代碼中使用您的解決方案?我無法讓它工作。 – djondal 2010-10-21 12:14:37
在「DOM.setEventListener(castedElem ...」 : DOMsinkEvents(castedElem,Event.ONCLICK | Event.ONMOUSEOUT | Event.ONMOUSEOVER); – 2010-10-21 12:23:29
之前添加以下內容:您需要將elem強制轉換爲com.google。 gwt.user.client.Element – 2011-09-27 15:01:43