javascript
  • jquery
  • html
  • json
  • 2009-11-23 70 views 0 likes 
    0

    我需要能够根据所选的下拉菜单项目来显示表格。我不知道用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> 
    

    谢谢!

    回答

    1

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

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

    你已经明白了这一点。

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

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

    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>"); 
    

    希望有所帮助。

    +0

    感谢您的帮助!是的,它更多的是教我如何编写基于web的应用程序,因为我习惯于在c#,C++,java和python中工作。 – user177215 2009-11-24 17:37:57

    +0

    很高兴能帮到你:-) – machineghost 2009-11-25 17:53:38

    0

    您是从JSON渲染客户端上的表吗?不是,那么你需要更改的事件调用此:

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

    我在html中渲染表格。另外,我应该补充说,我从来没有使用过JQuery/Json。 – user177215 2009-11-23 18:46:26

    +0

    如果您每次用户更改选择列表时都动态地呈现表格,那么您需要在服务器上创建一个新页面,该页面只显示表格,不添加任何html,并使用正确的查询调用该页面,以替换当前表。否则,如果所有的表都已经存在于你的页面中,那么你只需要使用jquery显示和隐藏适当的表。去看看jQuery的东西,如简单的AJAX或DOM操作。 – 2009-11-23 20:02:40

    相关问题