2012-04-08 14 views
0

私はJSとjQueryの初心者です。リンクをクリックすると、動的に2行(オレンジ色の行と列を含む行)を追加します。ページの下部に灰色の四角形が表示されます)。テーブルに2行を動的に追加するには

ここではスクリーンショットです:

<div class="ajout_prest"> 
    <p class="txt_ajout"> 
     <a class="AddResults" href="#">Ajouter une nouvelle prestation</a> 
    </p> 
    <p class="plus_ajout"> 
     <a class="AddResults" href="#">+</a> 
    </p> 
</div> 

そして、JSコード::これは私のHTMLコードです

enter image description here

<script> 
    $('.AddResults').click(function(){ 
     var rowNumber = 3; 

     // All the cols 
     var jourVar = $('<td class="jr_td"><p><input type="text" class="datepicker" /></p><p class="ou">ou</p><p><input type="text" class="datepicker" /></p></td>') ; 
     var creneauVar = $('<td class="cr_td"><select><option value="h1">10h30</option><option value="h2">11h30</option></select><select class="cr_td_s2"><option value="h3">10h30</option><option value="h4">11h30</option></select></td>') ; 
     var repassageVar = $('<td class="rp_td"><select><option value="h5" SELECTED>2h00</option><option value="h6">3h00</option></select></td>') ; 
     var menageVar = $('<td class="mn_td"><select><option value="h7" SELECTED>2h00</option><option value="h8">3h00</option></select></td>') ; 
     var totalVar = $('<td class="tt_td"><strong>4h.</strong></td>') ; 
     var pttcVar = $('<td class="pttc_td"><strong>88 &#8364;</strong></td>') ; 
     var corVar = $('<td class="cor_td"><a href="#"><img src="img/ico/corbeille.png" alt="" width="13" height="13" /></a></td>') ;  

     //Create 2 new rows 
     var newTitreRow = $('<tr><td class="bar_td" colspan=7><strong>PRESTATION ' + rowNumber + '</strong></td></tr>') ; 
     var newContentRow = $('<tr>' + jourVar + '' + creneauVar + '' + repassageVar + '' + menageVar + '' + totalVar + '' + pttcVar + '' + corVar + '); 

     //Append the new row to the body of the #table_prest table 
     $('#table_prest tbody').append(newTitreRow); 
     $('#table_prest tbody').append(newContentRow); 

     //Iterate row number 
     rowNumber++; 
    }); 
</script> 

しかし、もちろん何も起こりません。あなたはこの問題について考えていますか?

はあなたに:)ありがとう

答えて

2

あなたのjavascriptのコードでは、その中に少なくとも1個のエラーがあります。

var newContentRow = $('<tr>' + jourVar + '' + creneauVar + '' + repassageVar + '' + menageVar + '' + totalVar + '' + pttcVar + '' + corVar + '); 

concatentationの終わりには、

それはprobalbyする必要があります '+余分にあり:

var newContentRow = $('<tr>' + jourVar + '' + creneauVar + '' + repassageVar + '' + menageVar + '' + totalVar + '' + pttcVar + '' + corVar + '</tr>'); 

編集:

また、クリックするたびにリセットされるため、使用しているrowNumber変数がリンクをクリックするたびに上方に反復されることはありません。グローバル変数を使用するか、行番号でタイトル行を更新する場合は、代わりにボタンをクリックするたびにテーブルから行数を取得します。

+0

ありがとうございます。今すぐRowNumber変数で動作し、最初の行(オレンジ色の1行)が追加されます。 2番目の「newContentRow」は表示されません – Copernic

+0

もう1つの答えで述べたように、実行中にjQueryオブジェクトを文字列に連結することはできません。 newContentRowの個々のセルのjQueryオブジェクトを削除して文字列を使用するか、newContentRowにセルを追加するときに代わりに.appendメソッドを使用してください。 http://jsfiddle.net/ioncache/6kkfr/3/ – ioncache

+0

ありがとうございました:) – Copernic

0

私はこの問題は、あなたが多くの問題があります

var newContentRow = $('<tr>' + jourVar + '' + creneauVar + '' + repassageVar + '' + menageVar + '' + totalVar + '' + pttcVar + '' + corVar); 
+0

ありがとうございました: – Copernic

0

下の行の最後の一重引用符 'を忘れてしまったと思います。

指摘したように、行を連結すると、'のクローズがありません。

また、文字列の代わりにjQueryオブジェクトを連結しようとしています。 jQueryオブジェクトはまったく必要ありません。

また、可変連結の間に+ '' +は必要ありません。

var rowNumber = 3; 

$('.AddResults').click(function(){ 

    // Concatenate the cells into a single string 
    var cells = 
     '<td class="jr_td"><p><input type="text" class="datepicker" /></p><p class="ou">ou</p><p><input type="text" class="datepicker" /></p></td>' + 
     '<td class="cr_td"><select><option value="h1">10h30</option><option value="h2">11h30</option></select><select class="cr_td_s2"><option value="h3">10h30</option><option value="h4">11h30</option></select></td>' + 
     '<td class="rp_td"><select><option value="h5" SELECTED>2h00</option><option value="h6">3h00</option></select></td>' + 
     '<td class="mn_td"><select><option value="h7" SELECTED>2h00</option><option value="h8">3h00</option></select></td>' + 
     '<td class="tt_td"><strong>4h.</strong></td>' + 
     '<td class="pttc_td"><strong>88 &#8364;</strong></td>' + 
     '<td class="cor_td"><a href="#"><img src="img/ico/corbeille.png" alt="" width="13" height="13" /></a></td>' 

    // Create 2 new rows 
    var newTitreRow = '<tr><td class="bar_td" colspan=7><strong>PRESTATION ' + rowNumber + '</strong></td></tr>' 
    var newContentRow = '<tr>' + cells + '<tr>' 

    //Append the new row to the body of the #table_prest table 
    $('#table_prest tbody').append(newTitreRow + newContentRow); 

    //Iterate row number 
    rowNumber++; 
}); 
+0

ありがとう、それは完璧にも動作します! :D – Copernic

関連する問題