2017-02-24 49 views
-2

这里的功能:如何在每次调用函数时在JavaScript中创建唯一的ID?

function addAttachment() { 
    if (allowed_attachments <= 0) 
     return alert("', $txt['more_attachments_error'], '"); 

    document.getElementById("uploadBtn").onchange = function() {             
     document.getElementById("uploadFile").value = this.value; 
    }; 


    setOuterHTML(document.getElementById("moreAttachments"), 
     \'<div class="upload_attachment">\ 
      <input id="uploadFile" placeholder="File">\ 
      <label class="custom-file-input">\ 
       <input type="file" id="uploadBtn" name="attachment[]">\ 
      </label></div><span id="moreAttachments">\ 
     </span>\'); 
    allowed_attachments = allowed_attachments - 1; 
    return true; 
} 

UploadBtn和UploadFile需要是唯一的每次,我该怎么办呢?我真的坚持

+0

如何唯一必须“独一无二”的呢?全球独一无二?一个用户在一定时间内足够独特? – deceze

+0

简答:生成一个足够大的随机数。 – deceze

+0

你可以查看[Mongoh's Truly Uniquie ID](https://github.com/mongoh/tuid) –

回答

1

使用日期对象的方法现在Date.now()

+0

如果id需要*全球唯一* ... – deceze

+0

它将永远不会是足够好的。它将永远是唯一的。每次你输入'Date.now()'它会给你当前的时间戳。您可以在控制台中验证这个2-3次。 – 2017-02-24 20:30:02

+0

*全球*独特的手段,即使两个不同的人在同一时间完成,它仍然必须是独一无二的!! – deceze

2

使用一个全局对象(满分addAttachement范围)是这样的:

var UNIQUE_ID = 0; // the ID counter (will be incremented each time a new item is created so it'll be unique) 

function addAttachment() { 
    if (allowed_attachments <= 0) 
     return alert("', $txt['more_attachments_error'], '"); 

    document.getElementById("uploadBtn").onchange = function() {             
     document.getElementById("uploadFile").value = this.value; 
    }; 

    UNIQUE_ID++; // increment the ID counter 

    setOuterHTML(document.getElementById("moreAttachments"), 
     '<div class="upload_attachment">\ 
      <input id="uploadFile' + UNIQUE_ID + '" placeholder="File">\ 
      <label class="custom-file-input">\ 
       <input type="file" id="uploadBtn' + UNIQUE_ID + '" name="attachment[]">\ 
      </label></div><span id="moreAttachments' + UNIQUE_ID + '">\ 
     </span>'); 
    allowed_attachments = allowed_attachments - 1; 
    return true; 
} 
相关问题