2016-08-23 16 views
0

JavaScriptを初めて使用しています。このタスクには苦労しています。私はテーブルをページ付けするコードを書いています。現在、ボタンに関連するすべてのロジックはハードコードされており、よりダイナミックにしたいと考えています。つまり、私は同じことをするために別々のコードを持っている5つのボタンを持っています。私はn個のボタンとそれらをコントロールする1つのスクリプトを持つように私のコードをリファクタリングしたいと思います。JavaScriptでn個のボタン(または可変数のボタン)を作成する

ボタンの総数/レコード数を生成するコードを作成し、そのボタンの値を取得して、既存のコードに渡してデータテーブルの右側のセクションを取得したいとします。 。

どうすればよいですか?私が見つけたすべてのドキュメントは、DataTablesのようなjQueryライブラリのためのものです(これは1時間の作業に費やしたもので、何も表示されませんでした)。

ヒント、トリック、またはチュートリアルをお待ちしております。

EDIT

$(document).ready(function() { 
     $('#b1').click(function() { 
      var data = $("#isgeo").serializeArray(); 
      data.push({ name: "page", value: '1' }) 
      $.ajax({ 
       type: 'GET', 
       url: '@Url.Action("GetTable", "SubsidencePoints")', 
       data: $.param(data), 
       cache: false, 
       processData: false, 
       contentType: false 
      }).done(function (result) { 
       $('#Sub-table').html(result); 
       }); 
     $('#b2').click(function() { 
      var data = $("#isgeo").serializeArray(); 
      data.push({ name: "page", value: '2' }) 
       $.ajax({ 
        type: 'GET', 
        url: '@Url.Action("GetTable", "SubsidencePoints")', 
        data: $.param(data), 
        cache: false, 
        processData: false, 
        contentType: false 
       }).done(function (result) { 
        $('#Sub-table').html(result); 
        }); 
+0

あなたが説明したことを行うコードを書いてから、戻ってきて、あなたが遭遇する特定の問題について質問してください。 – dlsso

+0

もちろん、ハードコードを掲載しました。私はJavaScriptを2日間行っていたので、どのように可変数のボタンを生成するのか分かりません。コードを書く必要はありません。私はw3schoolsのチュートリアルをよく読んでおり、この状況に特有のものは見つけられませんでした。これはコードをより動的にするのに役立ちます。あなたがリソースを知っていれば、私はそれを感謝します。私はチュートリアルを見つけるのにもっと正確な検索語を使うか、間違ったものを使っているかもしれません。 –

+0

タスクを完了するのに十分な情報があるようです。 –

答えて

0

かなり簡単。ループを作成してボタンの総数をループし、次にcreateElementを使用してボタンを作成し、プログラムにイベントをアタッチするだけです。次のコードを調べてください。

<div id="nav-buttons"> 
 

 
</div> 
 

 
<script> 
 
    
 
    var totalRecords = 500; 
 
var recordsPerPage = 50; 
 

 
var totalButtons = totalRecords/recordsPerPage; 
 
var navButtons = document.getElementById("nav-buttons"); 
 
    console.log(totalButtons) 
 
for (var b=0; b<totalButtons;b++) 
 
{ 
 
    var button = document.createElement("button"); 
 
    button.setAttribute("pageto", b); 
 
    button.innerHTML="Page " + b; 
 
    navButtons.appendChild(button); 
 
    
 
    button.addEventListener("click", function(event) { 
 
    var btn = event.target; 
 
    var page = btn.getAttribute("pageto"); 
 
    navButtons.appendChild(btn); 
 
    alert(page); 
 
    // goto(page) -- write your function for getting the records for page[page] 
 
    }); 
 
    
 
} 
 
    </script>

+0

ありがとうございます。これはこれを行うために私が知る必要があるすべてのもののように見えます。私はこのcreateElement関数を見たことがないが、このコードのgetElementByIdと他の部分を使っていた。 –

+0

JQueryを使用している場合は、次のようにすることもできます。var button = $( "

0

おそらくforループしてみてください -

$(document).ready(function() { 
    for (var i = 0; i < numButtons; i++) { 
     $('#b' + i).click(function() { 
      var data = $("#isgeo").serializeArray(); 
      data.push({ name: "page", value: '1' }); 
      $.ajax({ 
       type: 'GET', 
       url: '@Url.Action("GetTable", "SubsidencePoints")', 
       data: $.param(data), 
       cache: false, 
       processData: false, 
       contentType: false 
      }).done(function (result) { 
       $('#Sub-table').html(result); 
      }); 
     }); 
    } 
}); 

はあなたが後にしているものということですか?

+0

私はボタンを作成する必要があるので、これはうまくいかないと思います。まだ存在しません。上記のポストは正しい方向だと思われます。私は参照してください –

+0

。おそらく、両方を組み合わせる必要があります - ボタンを作成するためのものと、 'click()'リスナーを付けるもの – ZenPylon

関連する問題