0

我有代码会生成一个随机的唯一 id .. 但是有没有办法可以编辑这个代码,以便它以特定的方式获取一个日期,比如 yyyy-mm-dd-0001。最后 4 位我希望它每次单击 generateid 按钮时加 1。所以它将更改为 0002。这是我拥有的当前代码。有没有可以自动获取日期的功能?

  var counter = 0000;
    function Counter() {
if((document.getElementById("generateid").clicked == true)
{
Counter++
return counter;
}
    }




    function Month() {
        var m = new Date();
        var mm = m.getMonth() + 1;
        if (mm < 10) {
            mm = '0' + mm;
            return mm;
        } 


    }
    function Year() {
        var y = new Date();
        var yy = y.getFullYear();
        return yy;
    }
    function Day() {
        var d = new Date();
        var dd = d.getDate();
        return dd;
    }
//generate id
    function guidGenerator() {
        var theID = (Year() + "-" + Month() + "-" + Day() + "-" + Counter);
        return theID;
    }

    function generateID() {

        var TheTextBox = document.getElementById("generateidtxt");
        TheTextBox.value = TheTextBox.value + guidGenerator();
        document.getElementById("generateid").disabled = true;

    }
4

2 回答 2

0

您可以使用以下对象:

var idGenerator  = {
    seq: 0,
    generateId: function () {
       this.seq++;
       return (new Date()).toISOString().substring(0, 10) + '-' + ('000' + this.seq).substr(-4)
    }
}

像这样声明后,试试

function generateID() {
   var TheTextBox = document.getElementById("generateidtxt");
   TheTextBox.value = TheTextBox.value + idGenerator.generateId();
   document.getElementById("generateid").disabled=true;    
}
于 2013-06-13T15:41:34.430 回答
0

如果您正在寻求一种方法来跟踪所有站点访问者单独使用 javascript 生成 ID 的次数,那么如果不绑定一些后端来跟踪是不可能的。但是,以下代码将执行您对每个访问者的要求。

jsfiddle

var ttlIds = 0;

function guidGenerator() {
    var S4 = function () {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }
    return (S4() + S4() + S4());

}

function generateID() {

    var TheTextBox = document.getElementById("generateidtxt");
    TheTextBox.value = TheTextBox.value + guidGenerator().toString().toUpperCase();
    //document.getElementById("generateid").disabled=true; 

    ttlIds++;
    if(ttlIds < 10){
        ttlIds_formatted = '000'+ttlIds;
    }else if(ttlIds < 100){
        ttlIds_formatted = '00'+ttlIds;
    }else if(ttlIds < 1000){
        ttlIds_formatted = '0'+ttlIds;    
    }
    d = new Date();
    var funkydate = d.getFullYear() +'-' + (d.getMonth()+1) + '-' + d.getDate() + '-' + ttlIds_formatted;
    document.getElementById("funkydate").value = funkydate;

}
于 2013-06-13T15:50:02.790 回答