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

Javascript 单击时将单元格表更改为文本框,javascript,html-table,onclick,Javascript,Html Table,Onclick,我的代码有问题。当用户单击单元格表时,文本区域应出现。文本区域在单击时显示,但始终显示在第一个单元格上。我希望文本区域正好显示在单元格显示的位置。(表中的值是从数据库中检索的) 所有记录 表{文本对齐:对齐;} a{文本装饰:无; 颜色:黑色; } .replace{display:none;} 功能交换(el){ var ie=document.all&&!document.getElementById?document.all:0; var toObjId=/b$/.test(el.id)

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


所有记录
表{文本对齐:对齐;}
a{文本装饰:无;
颜色:黑色;
}
.replace{display:none;}
功能交换(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);
如果(/b$/.测试(el.id))
toObj.innerHTML=el.value;
否则{
toObj.style.width=el.offsetWidth+7+'px';
toObj.value=el.innerHTML;
}
el.style.display='none';
toObj.style.display='inline';
}

第一个
始终是显示的元素这一事实使您的代码听起来好像运行正常,但由于您正在生成具有相同
id
属性的多个元素,因此它的目标是第一个匹配的元素,而不是您单击的最近的元素

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



echo'我可以使用php值作为跨度和文本区域的id吗

  echo '<td>';
  echo   '<span id='.$row['employee_code'] . ' onclick="exchange(this);">'.$row['am_in'].'</span>';
  echo '<textarea ondblclick="exchange(this);" id='.$row['employee_code']. ' class="replace" type="text" value=' . $row['am_in'] .' >'. $row['am_in'] . '</textarea>';
  echo '</td>
echo';
回显“.$row['am_in'.]”;
回显“”$第['am_in'.'行];
回声'

@user1758736 RE:下面的“答案”-
id
属性必须以字母开头:抱歉……我还有一个问题,我可以将php值传递给变量,然后将该变量指定为span和textarea的id吗?感谢您回答我的问题……上述代码块中的第2行和第6-7行应分别导致元素
id
s为“itm1234”和“itm1234b”,其中
employee_code
为“1234”。不需要将php值传递给单独的变量,因为您直接输出HTML标记。如果您希望使用其他值,只需将这两个位置中的
$row['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>';

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