3

我认为这将是一个愚蠢的问题,但它就在这里。

我需要动态添加一个 div 并根据上次添加的 div 的先前添加元素的 ID 给它 ID + 1。

div是

<div id="file-uploader-0" class="file-uploader"></div>

所以我粗略地得出了那个代码:

$('#addOneMoreFileOrGroup').on('click', function(){

    var latestFileUploaderId = $('.well-large .file-uploader').last().attr('id').split('-')[2] + 1;

    $('.well-large .control-group:last').after('<div class="control-group deal-type-online">  \
            <label class="control-label">File / File Group Title:</label> \
            <div class="controls"> \
                <input class="span4 file-title" type="text"> \
                <span class="question label label-warning" data-title="File / Group Name:" data-content="Name for your file or group of related files (for example your brand logotype in different file formats)." data-original-title="">?</span> \
                <div id="file-uploader-' + latestFileUploaderId + '" class="file-uploader"></div> \
            </div> \
        </div>');

    });

但问题是,最后我收到“file-uploader-01”、“file-uploader-011”、“file-uploader-0111”。

我尝试使用“latestFileUploaderId++”,它给我正确的结果一次为“1”,然后为“11”、“111”、“1111”。

感谢您的提示和帮助!

4

10 回答 10

3

改变这个:

var latestFileUploaderId = $('.well-large .file-uploader').last().attr('id').split('-')[2] + 1;

对此:

var latestFileUploaderId = parseInt($('.well-large .file-uploader').last().attr('id').split('-')[2],10) + 1;
于 2012-11-08T14:26:00.267 回答
2

您正在将字符串添加到数字中,这会导致+运算符进行字符串连接。

首先将字符串转换为数字。

var latestFileUploaderId = parseFloat($('.well-large .file-uploader').last().attr('id').split('-')[2]) + 1;
于 2012-11-08T14:23:33.060 回答
2

将字符串从 id 转换为整数以正确递增:

var lastID = parseInt($('.well-large .file-uploader').last().attr('id').split('-')[2]);
var latestFileUploaderId = lastID + 1;
于 2012-11-08T14:24:16.803 回答
1
var latestFileUploaderId = parseInt($('.well-large .file-uploader').last().attr('id').split('-')[2],10) + 1;

您正在连接一个字符串和一个数字...... parseInt 会将字符串转换为其数值,然后添加将起作用。

于 2012-11-08T14:24:31.253 回答
1

你应该使用parseInt

var latestFileUploaderId = parseInt($('.well-large .file-uploader').last().attr('id').split('-')[2]) + 1;
于 2012-11-08T14:24:38.523 回答
1

您可以使用parseInt()将 id 转换为数字。

var latestFileUploaderId = parseInt($('.well-large .file-uploader').last().attr('id').split('-')[2]) + 1;
于 2012-11-08T14:24:48.240 回答
1
$('.well-large .file-uploader').last().attr('id').split('-')[2]

是一个字符串。您需要将其解析为 int(float)。尝试使用 parseInt、parseFloat

于 2012-11-08T14:25:07.740 回答
1

您需要将值转换为数字。像这样:

var latestFileUploaderId = Number($('.well-large .file-uploader').last().attr('id').split('-')[2]) + 1;
于 2012-11-08T14:26:50.063 回答
1

正如其他人所说,您需要先将变量更改为数字,但我不会使用 parseInt() 或类似的。相反,乘以 1 的速度要快得多,所以我建议这样做:

var last = $('.well-large .file-uploader').last().attr('id').split('-')[2];
var latestFileUploaderId = (last * 1) + 1;
于 2012-11-08T14:28:47.237 回答
1

JavaScript 使用 + 运算符连接在您​​的情况下发生的字符串。只有数字类型是算术总结的。为了增加 ID,您必须先将其转换为整数。

console.log ('1' + 1 ); 
String '11'

console.log( parseInt('1') + 1 )
Int 2
于 2012-11-08T14:32:53.590 回答