根据下拉框选择更改表

时间:2009-11-23 18:37:13

标签: javascript jquery html json

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

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

你的那部分是正确的。

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

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

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

希望有所帮助。

答案 1 :(得分:0)

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

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