使用JavaScript在表中指定位置插入一行

这篇博客介绍了如何使用JavaScript在HTML表格中根据鼠标点击的位置动态插入行。通过监听鼠标点击事件确定插入位置,并提供了插入行的示例代码。文章还提到了一个常见错误:在点击插入行按钮时误触发行插入,以及如何通过添加额外的判断来解决这个问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 最近在学JavaScript,下面是我自己做的一个例子(在w3cschool例子的基础上)

该例子实现功能是在鼠标点击的行之后插入一行,默认是在第一行插入。插入的内容可以自己输入,代码如下


<html>
<head>
<script type="text/javascript">

//global var
var pos =0


//to find the position you mouse has pressed
function whichElement(e)
{
 
    var targ
    if (!e) var e = window.event
    if (e.target) targ = e.target
    else if (e.srcElement) targ = e.srcElement
    if (targ.nodeType == 3) // defeat Safari bug
       targ = targ.parentNode
    if(targ.tagName=="TD"){//to adjust whether the element is tabledata
      
       pos = targ.parentNode.rowIndex+1
    }
    else if(tagName=="INPUT"){

       //to do nothing
    }
else{
        pos =0
    }

    //alert(pos)
}

//to insert a row in the place
function insRow()
  {
 
  //alert(pos)
  var x=document.getElementById('myTable').insertRow(pos)
  var y=x.insertCell(0)
  var z=x.insertCell(1)
  y.innerHTML=document.getElementById("cell1").value
  z.innerHTML=document.getElementById("cell2").value
  }
</script>
</head>

<body onmousedown="whichElement(event)">
<table id="myTable" border="1">
<tr>
<td>Row1 cell1</td>
<td>Row1 cell2</td>
</tr>
<tr>
<td>Row2 cell1</td>
<td>Row2 cell2</td>
</tr>
<tr>
<td>Row3 cell1</td>
<td>Row3 cell2</td>
</tr>
</table>
<br />
<p>
Cell1:<input type="text" id= "cell1" value="cell1"/>
Cell2:<input type="text" id= "cell2" value="cell2"/>
</p>
<input type="button" onclick="insRow()" value="插入行">

</body>
</html>


     这里需要注意的是当鼠标点击插入行按钮时,动作也会捕捉到并改变全局变量,一开始我没有意识到,即没有加入上面的红色代码,所以每次点击插入行时都是在第一行插入,原来按原设计,点击按钮时全局变量更改为0,所以只能在第一行添加了。

简单的解决方法是加入红色代码,这是即可避免刚才的问题。


      以上只是学习过程中的小经历,可以以此为模版,比如删除指定的行,或在指定行之前插入等功能皆可完成。


     继续学习JavaScript,继续交流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值