增加一个数字有更好的方法吗?

时间:2014-11-29 10:11:20

标签: javascript jquery

我正在努力研究如何增加一个奇怪的记录编号系统我觉得我在正确的轨道上但有更好的方法吗?

记录编号的作用类似于此会员编号 - 年 - 4位数字,例如1076-14-0081

我需要将数字的0081部分增加为下一个数字。

当我加载输入表单时,我将最后一个数字调用到文本字段animalId并关注文本字段。一旦他们退出该字段,就会运行以下代码并更新该字段。

$(function() {
    $("#animalId").focusout(function() {
        curNum = $("#animalId").val();
        animalIDArray = curNum.split('-');
        memberNumber = animalIDArray[0];
        var year = Number(animalIDArray[1]);
        animalNumber = Number(animalIDArray[2]);
        animalNumber = animalNumber +1;
        animalNumber = String("0000" + animalNumber).slice(-4);
        result = [memberNumber, year, animalNumber].join("-");
        $("#animalId").val(result);
        }); 
});

我想知道我是否正确地完成了它还是有更好的方法可以自动完成这项工作?

2 个答案:

答案 0 :(得分:1)

你可以使用RegExp,你的代码会更短但可能不会更快(你必须测试):

var result = $('#animalId').val().replace(/[0-9]{4}$/, function (number) {
    return ("000" + (parseInt(number) + 1)).slice(-4);
});

答案 1 :(得分:0)

这是混合数据和输出的情况。这通常与网站有关。

为了更清洁,尽管不是更快,但是有一个对象,例如:

my_id.memberNumber = 123;
my_id.year = 2014;
my_id.animalNumber = 189;

然后你可以,显然在animalNumber上做一个++

++my_id.animalNumber;

最后,您需要一个生成输出的函数:

output = [my_id.memberNumber, my_id.year, my_id.animalNumber].join('-');

这是干净的做事方式。如果您无法完全控制服务器生成的内容,那么如何初始化my_id可能很困难......以下是一个非常符合您的方案的示例(即从输入窗口小部件获取值。)

因此,在面向JavaScript面向对象的实现中,您可以执行以下操作:

my_id = function(val)
{
    var v = val.split('-');
    my_id.memberNumber = v[0];
    my_id.year = v[1];
    my_id.animalNumber = v[2];
};

my_id.prototype.nextAnimal = function()
{
    ++this.animalNumber;
};

my_id.prototype.toString = function()
{
    return [my_id.memberNumber, my_id.year, my_id.animalNumber].join('-');
};

// make use of object:
var id = new my_id($("#animalId").val());
id.nextAnimal();
$("#animalId").val(id.toString());

它可能看起来更复杂,但只是等待添加20多个函数等等......你会很高兴有一个类而不是普通的代码。