如何获取页面上动态显示的复选框的id



我有一个jsp页面,其中有一个html表。读取xml文件后,表的内容将被动态填充。根据xml文件中的某些数据,表中的行数可能从2到10不等。现在,在html表中显示的每一行中都有一个复选框复选框的id也被动态命名为。现在,我必须编写一些javascript代码,它依赖于显示的复选框的所有id。如何将表上显示的复选框的所有id动态地传递给javascript代码

PS:我在考虑这种方法,如果我错了,请纠正我声明一个空数组来保存复选框的id。当我使用for循环动态创建表的每一行时,我将复选框的id添加到数组中。现在,我想在javascript中使用这个数组

是否可以在javascript中访问此数组?如果是,如何将此数组传递到javascript块?在jsp中放置这个javascript代码的位置上是否有任何限制(比如在将复选框的id添加到数组的代码块之后/之前)。我对这类东西比较陌生。请帮助实现此方法

是的,类似于mplungjan的答案,您可以搜索元素类型,然后进一步挖掘以检索中的复选框元素

因此,在您的情况下,按id(如果您给了它一个id)或标记名(如果它是第一个也是唯一的表,则为'table'[0])搜索表,在表中搜索复选框元素,并将每个元素添加到数组中

var table   = document.getElementById('dataTable');
//OR if we assert there's only 1 table
//var table = document.getElementsByTagName('table')[0]; 
var tableInputTags = table.getElementsByTagName("input");
var checkboxArray= [];
for (var i=0; i<tableInputTags.length; i++) 
{
    if(tableInputTags[i].type=="checkbox") 
    {
        checkboxArray.push(tableInputTags[i].id);
    }
}
//continue doing something with the 
//array of dynamically created checkboxes...

如果我理解你有两种可能性。你可以

  1. 为服务器端for循环上的每次迭代将复选框的id添加到javascript数组中。因此,您需要在页面的开头声明一个空的js数组,然后为每个复选框添加一个script块,在其中使用<yourarray>.push("<yourid>")将id推送到数组中。这个解决方案并不是真正的性能(因为每个<script>块都会停止渲染过程一段时间,并且你会在几个地方"播种"代码),但从技术上讲是可行的——否则

  2. DOM ready(或onload)事件中,您查看input:checkboxDOM集合,获取id并将其推入数组,如下所示。

    var ids = [],
        cbx = document.querySelectorAll('input[type="checkbox"]');
    for (i = 0, l = cbx.length; i < l; i++) {
           ids.push(cbx[i].id);
    }
    console.log(ids);
    

Fiddle:http://jsfiddle.net/G44hH/1/-当然,如果可以的话,最好使用这个解决方案(而不是第一个)

假设页面加载后所有复选框都可用,则可以执行以下操作(纯javascript):

var checks=[];
window.onload=function() {
  var inputs = document.getElemementsByTagName("input");
  for (var i=0, n=inputs.name;i<n;i++) {
    if (inputs[i].type=="checkbox") checks.push(inputs[i].id);
  }
}

假设你有一个id为#table的表,其中有一些TR,你在TD中有复选框。你可以通过下面的jquery来完成:

$('#table tr').each(function() {
 alert($(this).find('input:checkbox').attr('id'));
});

但我想你不需要存储所有复选框id,你需要的复选框id与一个特定的Td相关,你在其中做一些事情,比如删除编辑等。

如果你能清楚地指定你想做什么,我可以给你发送合适的代码。

为所有复选框添加一个class属性,然后使用jquery按类选择这些复选框。

jquery选择器将返回这些复选框的数组,然后您可以根据需要使用此数组。像这样的东西。

<input type=checkbox class ="box"/>
var arr = [];
arr = $(".box");

最新更新