【问题标题】:Highlighting a row of table cells using a drop down select menu使用下拉选择菜单突出显示一行表格单元格
【发布时间】:2012-08-29 19:21:54
【问题描述】:

我一直在努力寻找实现这一目标的解决方案。我有一个用数据库中的数据填充的 HTML 表单。该表由 6 列组成,其中一列名为“状态”,在下面的每个单元格中都有一个下拉菜单。当用户从下拉列表中选择一个值时,该菜单包含三个值“待定”、“已批准”和“已拒绝”,该行上的所有单元格都应更改颜色(绿色 - 已批准、琥珀色 - 待定、红色 - 不批准)

到目前为止,这是我的代码:

<?php
$result = mysql_query("SELECT * FROM Orders")
or die (mysql_error());
?>
<table class="table1" style="background-color:#ffffff;" >
<h4>Purchase Orders</h4>
<tr>
<th>Order Number</th>
<th>Order Date</th>
<th>Ordered By</th>
<th>Supplier</th>
<th>Total Price</th>
<th>Status</th>
</tr>
<?php
while($row=mysql_fetch_array($result)){
echo "</td><td>";
echo $row['Orderno'];
echo "</td><td>";
echo $row['Orderdate'];
echo "</td><td>";
echo $row['Orderedby'];
echo "</td><td>";
echo $row['Supplier'];
echo "</td><td>£";
echo $row['totalprice'];
echo "</td><td>";
echo '  <select id="'.$row['Orderno'].'" onchange="myJSFunction(this)">
<option></option>
<option>Approved</option>
<option>Pending</option>
<option>Disapproved</option>                  
</select>';
echo "</td></tr>";
}
echo "</table>";
?>

如果有人能指出我正确的方向,我们将不胜感激。如何为每个颜色变化创建三个函数,然后将它们应用于每个选项值。如果我申请 Orderno,该行的所有单元格都会受到影响吗?

【问题讨论】:

  • 您应该粘贴实际生成的 HTML,而不是 PHP 代码
  • 这与您上次提出的问题有何不同:stackoverflow.com/questions/12180492/…?
  • 如果您喜欢 prev q-ns 的答案,您必须接受它们
  • 道歉它非常相似。我只是想知道在选择每个选项时如何触发更改。我不太明白的东西

标签: javascript php html-table


【解决方案1】:

我知道你没有用 jQuery 标记你的问题,但是如果它是一个选项,你可以使用这个:

$(document).ready(function() {
    var color = ['none', 'green', 'yellow', 'red'];
    $('table.table1').on('change','select', function() {
        $(this).parents('tr').css('background', color[$(':selected', this).index()]);
    });​
});

jsFiddle example

【讨论】:

  • 非常感谢您的解决方案,我将如何将其实现到 php 代码中?目前我将 Javascript 包含在页面的 标记中,然后在脚本中调用该函数,例如: echo ' 但是行颜色没有改变。再次感谢
  • 首先,您需要在页面头部包含 jQuery 库,然后使用上面的代码块。之后它应该可以工作了。
  • 好的,谢谢,喜欢这样吗? 然后是另一组脚本标签?当我创建
  • 正确。选择框更改时会自动调用。唯一的问题是上面的代码被设置为在页面上的所有选择框上运行。如果您有不希望将其附加到的选择框,则可以使用类、ID 或父元素的组合来指定它。
  • 好的,谢谢。当向数据库添加新记录时,选择框会在表中动态生成。所以可能很难指定一个类?
【解决方案2】:

试试这个 (jsFiddle):

function myJSFunction(element)
{
    var row = element.parentNode.parentNode;

    switch(element.options[element.selectedIndex].innerHTML)
    {
        case "Pending":
            row.style.background = "#FF7E00";
            break;
        case "Approved":
            row.style.background = "green";
            break;
        case "Disapproved":
            row.style.background = "red";
            break;
        default:
            row.style.background = "white";
    }
}

【讨论】:

  • Thank you for the solution, however I cannot see the fields change colour when each option value is selected.我在文档的
  • 对不起,我的意思是在我当前的脚本中实现这个例子:jsfiddle.net/j08691/eQNp5/1 不起作用。谢谢
  • 您是否包含了jQuery 库?您可以下载它并将其包含在本地代码中,也可以通过将其放在 部分中链接到它的托管副本:&lt;script type=text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"&gt;&lt;/script&gt;。您还需要将该代码放入 $(document).ready() 函数中,以便在页面加载之前它不会执行。
  • 您好 j08691,非常感谢您提供的新解决方案。这在创建表时有效,但是我无法让它在我的 php 代码中工作。我将完成我已采取的步骤。首先,我在我的页面上使用了 jquery。
  • 然后函数:
猜你喜欢
  • 2014-11-02
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 2013-07-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
相关资源
最近更新 更多