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」として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 = Number($('.well-large .file-uploader').last().attr('id').split('-')[2]) + 1;
于 2012-11-08T14:26:50.063 に答える
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

JavaScript は + 演算子を使用して、あなたの場合に発生する文字列を連結します。数値型のみが算術集計されます。ID をインクリメントするには、前に整数にキャストする必要があります。

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

console.log( parseInt('1') + 1 )
Int 2
于 2012-11-08T14:32:53.590 に答える
1
var latestFileUploaderId = parseInt($('.well-large .file-uploader').last().attr('id').split('-')[2],10) + 1;

文字列と数値を連結しています... parseInt は文字列を数値に変換し、加算が機能します。

于 2012-11-08T14:24:31.253 に答える
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 に答える