【发布时间】:2016-10-23 15:35:06
【问题描述】:
我正在通过 PHP 从 mysql 查询创建一个 html 表。我正在用查询结果集中的一条记录填充每个表行。
我使用 javascript 函数 getElementById 显示或关闭对话框。
由于我有很多行,我将 javascript 代码添加到 while 循环/表数据中。 这会创建大量的 javacode,我很确定这是不良做法的一个很好的例子。
如何在不为每一行生成(以编程方式)唯一的 JavaScript 函数的情况下做到这一点?数组是要走的路吗?
这是我的代码
<?php while($r = mysqli_fetch_assoc($result)){ $current_row_number++; ?>
<tr>
<td>
<!--Popup Window-->
<dialog id="window<?php echo $current_row_number; ?>">
<h3>Description</h3>
<p><?php echo $r['description']; ?></p>
<button id="exit<?php echo $current_row_number; ?>">Close</button>
</dialog>
<button id="show<?php echo $current_row_number; ?>">View</button>
<!--Popup Window-->
<script type="text/javascript">
var dialog<?php echo $current_row_number; ?> = document.getElementById('window<?php echo $current_row_number; ?>');
document.getElementById('show<?php echo $current_row_number; ?>').onclick = function() { dialog<?php echo $current_row_number; ?>.show(); };
document.getElementById('exit<?php echo $current_row_number; ?>').onclick = function() { dialog<?php echo $current_row_number; ?>.close(); };
</script>
</td>
</tr>
<?php } ?>
生成此示例输出:
<script type="text/javascript">
var dialog8 = document.getElementById('window8');
document.getElementById('show8').onclick = function() { dialog8.show(); };
document.getElementById('exit8').onclick = function() { dialog8.close(); };
</script>
<script type="text/javascript">
var dialog9 = document.getElementById('window9');
document.getElementById('show9').onclick = function() { dialog9.show(); };
document.getElementById('exit9').onclick = function() { dialog9.close(); };
</script>
<script type="text/javascript">
var dialog10 = document.getElementById('window10');
document.getElementById('show10').onclick = function() { dialog10.show(); };
document.getElementById('exit10').onclick = function() { dialog10.close(); };
</script>
等等……
我不需要一个完整的例子,但如果你能把我推向正确的方向,我会很高兴。我想摆脱那个$current_row_number...
在代码中重复执行任务是不好的做法,java 脚本代码看起来很垃圾
提前谢谢你
【问题讨论】:
标签: javascript php html mysql