【问题标题】:Change table based on dropdown box selection根据下拉框选择更改表格
【发布时间】:2009-11-23 18:37:12
【问题描述】:

我需要能够根据选择的下拉菜单项更改显示的表格。我不知道用javascript写什么。我到目前为止的代码是:

JS:

//change table viewed

$("#view").change( function (event) {
$.getJSON('view.php?view=' + $(this).val(), function (json) { 


});
});

HTML:

                <div>
                View: <select id="view"><option value="failed">Failed</option><option value="pending">Pending</option><option value="both">Both</option></select>
                <table id="jobs-failed" border="1">
                <tr><th>ID</th><th>Media</th><th>Playlist</th><th>Input</th><th>Output</th><th>Bit Rate</th><th>Status</th><th>Encoder</th><th>Progress</th></tr>
                <tr><td>2851</td><td>1849474</td><td>367</td><td>txt</td><td>html</td><td>best</td><td>failed</td><td>encvm2</td><td>NULL</td></tr>
                </table>
                <table id="jobs-pending" border="1">
                <tr><th>ID</th><th>Media</th><th>Playlist</th><th>Input</th><th>Output</th><th>Bit Rate</th><th>Status</th><th>Encoder</th><th>Progress</th></tr>
                <tr><td>2344</td><td>1843278</td><td>455</td><td>mp3</td><td>wav</td><td>best</td><td>pending</td><td>encvm1</td><td>NULL</td></tr>
                </table>
                <table id="jobs-both" border="1">
                <tr><th>ID</th><th>Media</th><th>Playlist</th><th>Input</th><th>Output</th><th>Bit Rate</th><th>Status</th><th>Encoder</th><th>Progress</th></tr>
                <tr><td>2851</td><td>1849474</td><td>367</td><td>txt</td><td>html</td><td>best</td><td>failed</td><td>encvm2</td><td>NULL</td></tr>
                <tr><td>2344</td><td>1843278</td><td>455</td><td>mp3</td><td>wav</td><td>best</td><td>pending</td><td>encvm1</td><td>NULL</td></tr>
                </table>
                </div>

谢谢!

【问题讨论】:

    标签: javascript jquery html json


    【解决方案1】:

    这感觉像是一个“教我如何编程”的问题(而不是一个“我如何解决这个特定的编程问题”的问题),所以我会有点简洁,但是 ...

    $("#view").change( function (event) {
    

    你说对了。

    $.getJSON('view.php?view=' + $(this).val(), function (json) {
    

    正如 Josh 指出的那样,除非您使用 AJAX,否则这是错误的。根据您在 Josh 的回答中的评论,我认为情况并非如此; IE。您已经准备好在页面上交换一些内容。在这种情况下,进行交换很简单:

    function doSwap(id) {
      // This is just one way of doing the swap; see jQuery Manipulation docs for others
      var content = $("#" + id).html();
      $("table#jobs-failed").html(content);
      // repeat for your other tables
    }
    $("#view").change( function (event) {
      var $target = $(event.target);
      var whatTheySelected = $target.val();
      if (whatTheySelected == case1) {
        doSwap("content1");
      } else if (whatTheySelected == case2) ...
    

    如果您没有内容(您只有带有数据或其他内容的 JS 变量),您将需要制作元素。而不是这样做:

      var content = $("#" + id).html();
    

    做:

      var content = $("<tr><td>" + yourVar + "</td><td>" + yourVar2 +"</td></tr>");
    

    希望对您有所帮助。

    【讨论】:

    • 感谢您的帮助!是的,它更像是教我如何编写基于 Web 的应用程序,因为我习惯使用 c#、c++、java 和 python。
    【解决方案2】:

    您是从 JSON 呈现客户端上的表格吗?不是,那么你需要改变事件来调用这个:

    $('#id_of_some_table_wrapper').load('view.php?view=' + $(this).val());
    

    【讨论】:

    • 我在 html 中呈现表格。另外,我应该补充一点,我过去从未使用过 JQuery/Json。
    • 如果您在每次用户更改选择列表时动态呈现表格,那么您需要在服务器上创建一个仅显示表格的新页面,无需额外的 html,并调用该页面正确的查询,以替换当前表。否则,如果所有表格都已经在您的页面中,那么您只需要使用 jquery 显示和隐藏正确的表格。去看看 jquery 对简单的 AJAX 或 DOM 操作的作用。
    猜你喜欢
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多