用JavaScript修改不需要的表数据


Unwanted table data with changing with JavaScript

我正在制作一个表,其中PHP用于<td>标记。这包含产品及其价格的列表。在表的顶部,我插入了两个按钮,一个用于按价格升序排列数据,另一个用于按价格降序排列数据。

缺省情况下,数据按升序排列。当我点击降序按钮,它的工作,但与表数据的变化,这是不需要的。

下面是我的CSS代码:
a {text-decoration:none; color:#0000FF;}
#hold .log {
  color:#0000FF;
   text-align:center;
   font-size:20px;
}
h2 {color:#0000FF;}
#left { width:200px;border:1px;border-style:solid;margin:0 auto;margin-top:20px;text-align:center;border-    color:#0000FF;float:left;}
#left div {border:1px;border-style:solid;border-color:#0000FF;}
#left div a {}
.style table {border:1px;border-style:solid;border-color:#0000FF;}
.style table tr td {border:1px;border-style:solid;border-color:#0000FF;color:#333;width:250px;}
.style table tr td input,select,textarea {width:250px;height:30px;}
下面是表格的代码:
<button onclick="as()">Ascending Order</button>
<button onclick="ds()">Descding Order</button>
<div class="style">
<table>
<tr>
<td>Title</td>
    <td>Price</td>
</tr>
<th><h2 style="text-align:left;">Cameras</h2></th>
<tr>    
  <?php $i=1;
        $qry_cam=mysql_query("SELECT* FROM camera ORDER BY camera.price ASC",$con);
        while($row=mysql_fetch_array($qry_cam))
        {
          echo "<tr id='cam_as'>
                  <td>$i-$row[title]<br /></td>
                  <td>$row[price]<br /></td>
                </tr>";
          $i++;
        }
  ?>
</tr>
<tr>    
  <?php $i=1;
        $qry_cam=mysql_query("SELECT* FROM camera ORDER BY camera.price DESC",$con);
        while($row=mysql_fetch_array($qry_cam))
        {
          echo "<tr id='cam_ds' style='display:none;'>
                  <td>$i-$row[title]<br /></td>
                  <td>$row[price]<br /></td>
                </tr>";
          $i++;
        }
  ?>
</tr>
</table>
</div><!-- style ends-->

最后,下面是完成所有所需工作的脚本:

<script type="text/javascript">
  function as()
  {
    $('#cam_as,#com_as,#cell_as').css('display','block');
    $('#cam_ds,#com_ds,#cell_ds').css('display','none');    
  }
  function ds()
  {
    $('#cam_ds,#com_ds,#cell_ds').css('display','block');
    $('#cam_as,#com_as,#cell_as').css('display','none');
  }
</script>

我已经试过了,但是我找不到我错在哪里。

你的代码有足够多的问题。我去掉了额外的

。我添加了类并相应地更改了javascript函数。你的问题主要是嵌套 的http://jsfiddle.net/Sanya_Zol/kC9Tk/

<button onclick="as()">Ascending Order</button>
<button onclick="ds()">Descding Order</button>
<div class="style">
<table>
<tr>
<td>Title</td>
    <td>Price</td>
</tr>
<th><h2 style="text-align:left;">Cameras</h2></th>
<?php $i=1;
    $qry_cam=mysql_query("SELECT* FROM camera ORDER BY camera.price ASC",$con);
    while($row=mysql_fetch_array($qry_cam))
    {
      echo "<tr class='cam_as'>
              <td>$i-$row[title]<br /></td>
              <td>$row[price]<br /></td>
            </tr>";
      $i++;
    }
?>
<?php $i=1;
    $qry_cam=mysql_query("SELECT* FROM camera ORDER BY camera.price DESC",$con);
    while($row=mysql_fetch_array($qry_cam))
    {
      echo "<tr class='cam_ds' style='display:none;'>
              <td>$i-$row[title]<br /></td>
              <td>$row[price]<br /></td>
            </tr>";
      $i++;
    }
?>
</table>
</div>

<script type="text/javascript">
function as(){
    $('.cam_as,#com_as,#cell_as').show();
    $('.cam_ds,#com_ds,#cell_ds').hide();
}
function ds(){
    $('.cam_ds,#com_ds,#cell_ds').show();
    $('.cam_as,#com_as,#cell_as').hide();
}
$(as); // run as() when document ready
</script>

循环内部和外部都有<tr>标签,您只需要它们一次。循环还会创建多个具有相同ID的<tr>标签,这是不正确的。尝试使用jQuery-Toggle来显示/隐藏元素。

问题的最后一部分我没听清楚,对不起。