我有以下代码块,我不知道如何做我想做的事。
本质上我希望javascript弹出窗口显示该行的值,但(显然)它只显示最后一行数据,因为没有为每一行设置弹出窗口,而是在单击时调用该变量。
任何帮助将不胜感激!
<?php
$result = mysql_query("SELECT hr_overtime.overtime_id, hr_user.name, hr_overtime.overtime_date, hr_overtime.overtime_type, hr_overtime.overtime_from, hr_overtime.overtime_to, hr_overtime.overtime_amount, hr_overtime.details
FROM hr_overtime
inner join hr_user
on hr_user.user_id = hr_overtime.user_id
where hr_overtime.overtime_status = 'Pending' order by hr_overtime.overtime_date ASC");
echo "
<table border='0'>
<tr>
<th class='tablecell_header'>Consultant</th>
<th class='tablecell_header'>Date</th>
<th class='tablecell_header'>Type</th>
<th class='tablecell_header'>From</th>
<th class='tablecell_header'>To</th>
<th class='tablecell_header'>Amount</th>
<th> </th>
<th> </th>
<th> </th>
</tr>";
while($row = mysql_fetch_array($result))
{
$work = $row['details'];
echo "<tr>";
echo "<td class='tablecell'>" . $row['name'] . "</td>";
echo "<td class='tablecell'>" . $row['overtime_date'] . "</td>";
echo "<td class='tablecell'>" . $row['overtime_type'] . "</td>";
echo "<td class='tablecell'>" . $row['overtime_from'] . "</td>";
echo "<td class='tablecell'>" . $row['overtime_to'] . "</td>";
echo "<td class='tablecell'>" . $row['overtime_amount'] . "</td>";?>
<td class='tablecell'> <button onclick="myFunction()">Show work</button> </td><script>
function myFunction()
{
alert("<?php echo $work;?>");
}
</script>
<?php
echo "<td valign='middle'><form action='manager_overtime_approve.php' method='post'>
<input name='approve_id' type='hidden' value='" . $row['overtime_id'] . "' />
<input type='submit' value='APPROVE' id='edit' />
</form></td>";
echo "<td valign='middle'><form action='manager_overtime_reject.php' method='post'>
<input name='cancel_id' type='hidden' value='" . $row['overtime_id'] . "' />
<input type='submit' value='REJECT' id='edit' />
</form></td>";
echo "</tr>";
}
echo "</table>";
?>
答案 0 :(得分:1)
您无需使用错误的单独功能。您可以简单地使用内联警报:
<td class='tablecell'> <button onclick="alert('<?php echo $work;?>');">Show work</button>
答案 1 :(得分:1)
你不能在你的foreach循环中插入myFunction()
的声明,这样你就可以覆盖行为所显示的每个条目,因此它只适用于最后一行。
一个快速解决方案是将整个$ work变量作为onclick函数的参数插入,例如。
<td class='tablecell'> <button onclick="myFunction('<?php echo $work ?>')">Show work</button>
然后在foreach循环之外,您可以定义myFunction
,例如:
function myFunction(details){
alert(details)
}
答案 2 :(得分:0)
我认为,在结果HTML中,你有myFunction()的多个定义,而javascript只使用最后一个。您可以使用HTML标记属性来显示正确的信息。
答案 3 :(得分:0)
试试这个
$work .= $row['details'];
并将javascript设置为循环
祝你好运
答案 4 :(得分:0)
那是因为myFunction
是一个 Javascript 函数,它被定义为一次并且不与PHP共享相同的范围。所以$work
只保留最后一个值。
我建议这样的事情:
echo "<tr data-detail-value='$work'>";
...
<td class='tablecell'> <button onclick="myFunction(this)">Show work</button>
...
function myFunction(btn) {
alert(btn.parentNode.parentNode.getAttribute("data-detail-value"));
}