gpt4 book ai didi

javascript - 单击时将单元格表更改为文本框

转载 作者:行者123 更新时间:2023-11-28 09:36:19 25 4
gpt4 key购买 nike

我的代码遇到问题。当用户单击单元格表格时,应该出现文本区域。单击时会出现文本区域,但它始终出现在第一个单元格上。我希望文本区域恰好出现在单元格出现的位置。 (表中的值是从数据库中检索的)..

<?php
session_start();

if(!isset($_SESSION['key']))
{
header("location:index.php");
}

include"connect.php";?>
<html>
<head>
<title>All Records</title>
<style>
table{ text-align:justified;}
a {text-decoration:none;
color:black;
}
.replace {display:none;}
</style>
<script type="text/javascript">
function exchange(el){
var ie=document.all&&!document.getElementById? document.all : 0;
var toObjId=/b$/.test(el.id)? el.id.replace(/b$/,'') : el.id+'b';
var toObj=ie? ie[toObjId] : document.getElementById(toObjId);

if(/b$/.test(el.id))
toObj.innerHTML=el.value;
else{
toObj.style.width=el.offsetWidth+7+'px';
toObj.value=el.innerHTML;
}
el.style.display='none';
toObj.style.display='inline';
}
</script>
</head>
<body>


<?php
echo "<table border=1 id='records' >";
echo "<tr><th class='data' rowspan='2' ><strong>EMPLOYEE</strong></th>";
echo "<th class='data' rowspan='2'>DATE</th>
<th colspan='2'>AM</th>
<th colspan='2'>PM</th>
<th colspan='2'>OVERTIME</th></tr>";
echo "<tr>
<th>Arrival</th>
<th>Departure</th>
<th>Arrival</th>
<th>Departure</th>
<th>In</th>
<th>Out</th>
</tr>";


$query="SELECT
employee_detail.employee_code,
employee_detail.lname,
employee_detail.fname,
employee_detail.mname,
employee_record.date,
employee_record.am_in,
employee_record.am_out,
employee_record.pm_in,
employee_record.pm_out,
employee_record.over_in,
employee_record.over_out
FROM employee_detail INNER JOIN employee_record ON
employee_record.employee_code=employee_detail.employee_code ORDER BY id DESC ";

$result=mysql_query($query);
$affected=mysql_affected_rows();

while($affected>=1&&$row=mysql_fetch_array($result))
{
echo '<tr><td><a href="edit.php?id2='.$row['employee_code'].'" name="edit">';
echo $row['lname'].",&nbsp";
echo $row['fname']."&nbsp";
echo $row['mname']."</a></td>";
echo '<td>'.$row['date'].'</td>';
echo '<td><span id="itm1" onclick="exchange(this);">'.$row['am_in'].'</span>
<textarea ondblclick="exchange(this);" id="itm1b" class="replace" type="text"
value='.$row['am_in'].'></textarea></td>';
echo '<td>'.$row['am_out'].'</td>';
echo '<td>'.$row['pm_in'].'</td>';
echo '<td>'.$row['pm_out'].'</td>';
echo '<td>'.$row['over_in'].'</td>';
echo '<td>'.$row['over_out'].'</td>';
$affected--;
}
echo "</tr></table>";
?>

</body>
</html>

最佳答案

事实是第一个<textarea>总是出现的那个,听起来您的代码运行正常,但因为您正在生成具有相同 id 的多个元素属性,它的目标是第一个匹配元素,而不是距离您单击位置最近的元素。

制作每个 id通过附加结果的“employee_code”值(可能是数据库中的主键)来保持唯一性(这实际上是有效性的要求):


echo '<td>';

echo '<span id="itm"' . $row['employee_code'] . '" ';
echo 'onclick="exchange(this);">';
echo $row['am_in'];
echo '</span>';

echo '<textarea ondblclick="exchange(this);" id="itm';
echo $row['employee_code'] . 'b" class="replace" type="text" ';
echo 'value=' . $row['am_in'] . '>';
echo '</textarea>'

echo '</td>';

关于javascript - 单击时将单元格表更改为文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13004362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com