1

ドロップダウンを使用して、ページに複数のdivを追加しようとしています。

私が抱えている問題:

var antal =  $('.room-holder').size();
var roomholder = '<div class="room-holder">' + $('.room-holder').html() + '</div>';
var rooms = "";

while ( $( this ).val() > ( antal + 0 ) ) {
    rooms = rooms + roomholder;
    antal++;
}

$( rooms ).insertAfter( $('.room-holder') );
rooms = "";

また、次のようなforループを試してみました。

var many = ( $( this ).val() - antal );

for( i=0; i < many; i++){
    rooms = rooms + roomholder;
}

$( rooms ).insertAfter( $('.room-holder') );
antal =  $('.room-holder').size();
rooms = "";

ドロップダウンの値は1〜10です。

初めて選択したときは適切な数のフィールドを取得しますが、2回目に選択したときは、追加する必要のある量に2〜3フィールドを加えたものになります。

誰もが理由を知っていますか?

編集:私はそれをjsfiddleに追加しました:http://jsfiddle.net/gmKJw/

4

2 に答える 2

0

ドロップダウンで選択した部屋の数が現在表示されている部屋の数より少ない場合、ここで考えられる論理エラーが発生します。私は次の解決策を提案します(他の文体の改善を含みます):

var numRoomsReqd = parseInt( $(this).val(), 10);
var numCurrRooms =  $('.room-holder').length;        // use length, not size
var $roomholder = $('.room-holder').first().clone();
var $rooms = $();
$('.room-holder').slice(numRoomsReqd).remove()

while ( numCurrRooms < numRoomsReqd ) {
    $rooms = $rooms.add($roomholder.clone());
    numCurrRooms++;
}

$rooms.insertAfter( $('.room-holder').last() );
于 2013-03-08T09:39:03.337 に答える
0

roomholderバグは、挿入される部屋が既に存在するすべての部屋に追加されていたことです。デモ:フィドル

room-holder修正は、最後の後に new に追加することですroom-holder

変化する

$( rooms ).insertAfter( $('.room-holder') );

$( rooms ).insertAfter( $('.room-holder:last') );

デモ:フィドル

于 2013-03-08T09:35:41.653 に答える