如何使用javascript获取包含tr标记的数组中单击单元格的索引?
我正在为ISP开发一个在线注册系统。在这个项目中,我想获得prices表中单击的单元格的索引。在表的最后一行中,我只有到注册页面的链接。当用户点击链接时,他/她选择的服务的信息将通过get方法发送到注册页面。我可以处理这个问题,但我的问题是我无法获得所选链接的容器单元格的索引。我的意思是当我使用此代码时:如何使用javascript获取包含tr标记的数组中单击单元格的索引?,javascript,html,arrays,Javascript,Html,Arrays,我正在为ISP开发一个在线注册系统。在这个项目中,我想获得prices表中单击的单元格的索引。在表的最后一行中,我只有到注册页面的链接。当用户点击链接时,他/她选择的服务的信息将通过get方法发送到注册页面。我可以处理这个问题,但我的问题是我无法获得所选链接的容器单元格的索引。我的意思是当我使用此代码时:var rows=document.getElementById(“myTable”).rows执行后,“行”应该是一个二维数组,包含表中的行和单元格。我现在试图实现的是,当用户单击单元格内的链
var rows=document.getElementById(“myTable”).rows代码>
执行后,“行”应该是一个二维数组,包含表中的行和单元格。我现在试图实现的是,当用户单击单元格内的链接时,我可以访问行
数组中选定单元格的索引。如何实现这一点?我不清楚您是要在行中使用单元格索引,还是要在表中使用行索引,或者两者都使用,因此这包括了以下两个方面:
您可以找到包含的td
并使用其;并找到其包含的tr
,并使用其:
例如:
函数单击处理程序(e){
var节点=e.target;
while(node&&node.tagName!=“TR”){
if(node.tagName==“TD”| | node.tagName==“TH”){
log(“单元格的索引为”+node.cellIndex);
}
node=node===node.tagName==“表”?null:node.parentNode;
}
如果(节点){
log(“行的索引是”+node.rowIndex);
}
}
document.getElementById(“表格”).addEventListener(“单击”,yourClickHandler,false)代码>
表格,td{
边框:1px实心#ddd;
}
桌子{
边界塌陷:塌陷;
}
当用户单击特定按钮时,当前行索引将存储在索引
变量中。希望这是你需要的
(function(){
// `.button-class` is a button on which user clicks to add service.
$('.button-class').on('click', function() {
var index = $(this).closest('tr').index();
})
})();
由于这与PHP无关,我已经为您删除了标记。遗憾的是,现实情况是,对于任何与浏览器代码相关的JavaScript问题,您都需要明确说明是否在使用jQuery。即使你不说你是,人们也会认为你是(他们不应该,但他们确实是)。非jQuery问题的jQuery答案没有用。谢谢你的回答。当我将此代码添加到我的项目中,并使用Firefox“inspect element”控制台选项卡检查它时,它返回“TypeError:document.getElementById(…)为null”。我的页面中有另一个javascript代码,它返回相同的代码。如果我有多个表呢?我应该使用getElementsByTagName(“表”)吗?在控制台选项卡中,它还返回“TypeError:document.getElementsByTagName(…).addEventListener不是一个函数”@rTheNameVar:getElementById
上面的仅用于示例。在您自己的代码中,您需要根据HTML的结构确定要钩住单击事件的元素。您在尝试对getElementsByTagName
的结果使用addEventListener
时遇到错误:如何识别要触发“单击”事件的元素?我到处找,没有什么特别的事情可以做。每个网站都说,只给元素一个id。就像这里:@rthenavar:。。。
(function(){
// `.button-class` is a button on which user clicks to add service.
$('.button-class').on('click', function() {
var index = $(this).closest('tr').index();
})
})();