如何分配唯一的DOM元素ID

11
我的GWT应用程序创建文本区域,每个文本区域必须具有ID才能对第三方JavaScript库有用。 我知道如何为GWT部件分配ID; 我正在寻找一种好的方法来生成这些唯一的ID。
4个回答

17

14
HTMLPanel中的方法调用了更通用的版本:Document.get().createUniqueId();,如果你不需要HTMLPanel widget,那么这可能是你想要使用的,而不是创建对它的依赖关系。注意不要改变原来的意思。 - Hilbrand Bouwkamp

1

Javascript:

var idIndex = 0;

function getNewId() {
    return "textGWT"+(idIndex++);
}

Java:

class IdMaker {

    private static int idIndex = 0;

    public static String generate() {
        return "textGWT"+(idIndex++);
    }
}

1

我相信这是您需要的唯一标识符(使用时间戳和“widget-”命名空间)。

'widget-' + (new Date).valueOf()

1

2
UUID在GWT中没有实现,但我找到了一个指南,介绍如何提供自己的实现:http://code.google.com/webtoolkit/doc/1.6/DevGuideOrganizingProjects.html#DevGuideModuleXml我还发现了一个实现:http://2ality.blogspot.com/2009/01/uuids-for-gwt.html感谢您的启示。 - David
没问题!顺便说一下,看起来 Chi 的回答可能更适合你的需求。 - harto
是的,我认为你说得对:HTMLPanel.createUniqueId 似乎正是我需要的。 - David
使用System.currentTimeMillis()时要小心,在许多系统上,调用的粒度不精确到毫秒,即使相隔几毫秒调用,你最终得到的值也是相同的。无论如何,你永远不能保证不会使用相同的ID两次。如果你能够共享它,增加一个全局计数器可能更安全。 - Laurent Grégoire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接