0

こんにちは、ボタンがクリックされるたびにラベルとテキストフィールドをテーブルに追加していますが、各ラベルに増分値を与えようとしていますが、予期しない識別子エラーが発生し続けています。コードは次のとおりです。

var counter = 2;

$('.addButton').click(function()
{
    $('#existingRow').after($('<tr><td><?php $cou = 2; echo $this->Form->label('Option' + $cou + ':');  $cou++ ?></td><td><?php echo $this->Form->input('name', array('label' => '', 'style' => 'height: 10px; width: 150px;')); ?></td></tr>'));
    counter++;
});

どんな助けでも大歓迎です。

4

3 に答える 3

1

PHPコードブロック内でJS変数カウンターを使用することはできません。試す:

var counter = 2;

$('.addButton').click(function()
{
   $('#existingRow').append('<tr><td>labelname' +  counter + ':'</td><td><?php echo $this->Form->input('name', array('label' => '', 'style' => 'height: 10px; width: 150px;')); ?></td></tr>');
   counter++;
});

それが機能する場合は、labelnameの代わりに、で生成されたものをここに挿入できます

 echo $this->Form->label('Option 2:');

次に、JSのカウンターで2を変更します

于 2012-09-05T14:13:56.187 に答える
1

$() セレクターでこれらの行を識別子として使用しているため、エラーが発生します。つまり、$(' <tr><td><?php echo $this->Form->label('Option '+ counter + ':'); ?></td><td><?php echo $this->Form->input('name', array('label' => '', 'style' => 'height: 10px; width: 150px;')); ?></td></tr>') です。灰色のコードは識別子と見なされます。

私の提案は、document.createElement を使用してテーブル行の要素を作成することです。これが完全なコードです。

htmlファイルには、テーブルが必要です

<table id="my-table"></table>

あなたのjavascriptファイルで

var counter = 2;
$('.addButton').click(function()
{
    tr = document.createElement('tr');
    tr.innerHTML = "<td><?php echo $this->Form->label('Option '+ counter + ':'); ?></td><td><?php echo $this->Form->input('name', array('label' => '', 'style' => 'height: 10px; width: 150px;')); ?></td>";
    $('#my-table').append(tr);
    counter++;
});

それは確かにうまくいくでしょう。

于 2012-09-05T14:08:14.573 に答える
0

探している人への答えは次のとおりです。

    var counter = 2;

$('.addButton').click(function()
{
    $('#existingRow').before($('<tr><td><label for="VariableOption">Option' + counter + ':</label></td><td><?php echo $this->Form->input('name', array('label' => '', 'style' => 'height: 10px; width: 150px;')); ?></td></tr>'));
    counter++;
});

@grzegorz_motylに感謝

于 2012-09-05T14:37:57.933 に答える