Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript获取包含tr标记的数组中单击单元格的索引?_Javascript_Html_Arrays - Fatal编程技术网

如何使用javascript获取包含tr标记的数组中单击单元格的索引?

如何使用javascript获取包含tr标记的数组中单击单元格的索引?,javascript,html,arrays,Javascript,Html,Arrays,我正在为ISP开发一个在线注册系统。在这个项目中,我想获得prices表中单击的单元格的索引。在表的最后一行中,我只有到注册页面的链接。当用户点击链接时,他/她选择的服务的信息将通过get方法发送到注册页面。我可以处理这个问题,但我的问题是我无法获得所选链接的容器单元格的索引。我的意思是当我使用此代码时:var rows=document.getElementById(“myTable”).rows执行后,“行”应该是一个二维数组,包含表中的行和单元格。我现在试图实现的是,当用户单击单元格内的链

我正在为ISP开发一个在线注册系统。在这个项目中,我想获得prices表中单击的单元格的索引。在表的最后一行中,我只有到注册页面的链接。当用户点击链接时,他/她选择的服务的信息将通过get方法发送到注册页面。我可以处理这个问题,但我的问题是我无法获得所选链接的容器单元格的索引。我的意思是当我使用此代码时:
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();
    })
})();