【问题标题】:how to give a div tag a unique id using javascript如何使用javascript给一个div标签一个唯一的id
【发布时间】:2011-11-16 10:47:30
【问题描述】:

我可以使用 document.createElement('div') 制作一个 div 标签

但是我不知道如何给它一个唯一的 ID。

谁能帮帮我。

我知道如何使用innerHTML 来完成它,但是它非常麻烦。 (我听说这不是创建布局的好方法。)

【问题讨论】:

  • 这里的重点是在 unique 上作为随机生成的数字,还是像您提到的那样在不进入 innerHTML 的情况下干净地将 id 分配给div
  • 这些答案都没有帮助你吗?如果有,请单击它旁边的复选标记。

标签: javascript html unique innerhtml createelement


【解决方案1】:

unique 理解为不能与标记中的任何其他ID 混淆的ID,最简单的方法是获取本地时间戳。如图here

let div = document.createElement("div");
// With old JS syntax
div.id = "div_" + new Date().getTime().toString();
// With ES6 Template Strings you can also write
div.id = `div_ ${new Date().getTime().toString()}`;

虽然使用createElement 可能会有点麻烦,但您应该使用一些 JavaScript 框架来解决微小的细节问题(例如 jQuery、Mootools、Dojo 等)。

【讨论】:

  • 我喜欢这个测试,但我担心它不够好。当我背靠背运行时,我得到两个相同的值。在我的“实时”测试中,在某些情况下,我得到了大约 6 毫秒的差异,这相当接近。
  • 这可能有点矫枉过正,但我​​正在使用这个:var datestr = new Date().getTime().toString(), randomstr = Math.random().toString(); return string + '_' + MD5(datestr + randomstr); MD5 是来自 webtoolkit 的函数:webtoolkit.info/djs/webtoolkit.md5.js
【解决方案2】:

您可以为此使用库: https://github.com/LiosK/UUID.js

它“生成符合 RFC 4122 的 UUID。”

拥有该元素,您可以使用代码为其分配 id:

element.id = "somePrefix" + UUID.generate()

【讨论】:

    【解决方案3】:
    var myDiv = document.createElement('div');
    myDiv.id = "myUniqueId";
    

    【讨论】:

    • @adam:改了。怎么样?
    • 我已经删除了反对票,但我认为问题更多是关于如何生成唯一 ID
    • @adam:谢谢,兄弟。我同意你这样想。 :)
    • 不,@adam...坚持你的枪!这不是一个完整的答案。 “独一无二”的意思是“不重复”、“与众不同”。如果此代码在同一页面上使用了两次...不是唯一的。
    • 敲响战鼓,互联网是严肃的事情。 (我有一个 OP 无论如何都不接受任何答案的问题......)
    【解决方案4】:
    var d = document.createElement('div');
    d.id = 'myElementId';
    d.innerHTML = 'This is the content!';
    

    或者

    var d = document.createElement('div')
       .id = 'myElementId';
    

    .. 真的一样,只是布局方式不同。

    这负责分配 id。现在,为了独一无二。最好的方法是使用当前时间,因为 javascript 时间以毫秒为单位,所以它不太可能重复。

    把它放在一起:

    var d = document.createElement('div')
       .id = 'id'+new Date().getTime().toString();
    

    这确实有机会在适当的情况下自我复制。如果保持唯一性非常关键,那么唯一的方法就是使用指针:

    // establish  a variable to hold the pointer
    var uniquePointer = 0;
    
    // every time you use the pointer to create a new element, increment the pointer.
    var d = document.createElement('div')
       .id = 'id'+uniquePointer;
    uniquePointer ++;
    

    【讨论】:

    • 现在你已经更新了你的答案,我会删除它,但这是一个完全有效的反对意见,应该被视为建设性的批评
    • 我会随心所欲,我们现在有跨越世代的血仇。我将在一小时内开始对我的孩子进行灌输;做好准备。
    猜你喜欢
    • 2016-02-07
    • 2011-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多