Javascript中具有相同Id的多个元素

Javascript中具有相同Id的多个元素,javascript,Javascript,我有一个例子,一个html文件包含多个具有相同ID名称的元素 表行包含5列,其中我需要考虑2、3、4、5列数据。 <tr id='total_row'> <td>Total</td> <td>%(count)s</td> <td>%(Pass)s</td> <td>%(fail)s</td> <td>%(error)s</td>

我有一个例子,一个html文件包含多个具有相同ID名称的元素

表行包含5列,其中我需要考虑2、3、4、5列数据。

<tr id='total_row'>
    <td>Total</td>
    <td>%(count)s</td>
    <td>%(Pass)s</td>
    <td>%(fail)s</td>
    <td>%(error)s</td>
    <td>&nbsp;</td>
</tr>

全部的
%(计数)s
%(通过)s
%(失败)s
%(错误)s

我在文件的几个地方都有上面的代码。我需要使用javascript添加相应的值

Id应该是唯一的,如果使用相同的Id,javascript代码只引用第一个元素。但如果您仍想使用相同的id,则可以尝试以下代码:

$(function(){
   $('[id="total_row"]').each(function(){//run for every element having 'total_row' id
      var $this = $(this);
      $this.find('td').eq(1).text() //to get second column data
      $this.find('td').eq(1).text('dummy text') //to set second column data
   });
});

Id应该是唯一的,如果使用相同的Id,javascript代码只引用第一个元素。但如果您仍想使用相同的id,则可以尝试以下代码:

$(function(){
   $('[id="total_row"]').each(function(){//run for every element having 'total_row' id
      var $this = $(this);
      $this.find('td').eq(1).text() //to get second column data
      $this.find('td').eq(1).text('dummy text') //to set second column data
   });
});

Id应该是唯一的,如果使用相同的Id,javascript代码只引用第一个元素。但如果您仍想使用相同的id,则可以尝试以下代码:

$(function(){
   $('[id="total_row"]').each(function(){//run for every element having 'total_row' id
      var $this = $(this);
      $this.find('td').eq(1).text() //to get second column data
      $this.find('td').eq(1).text('dummy text') //to set second column data
   });
});

Id应该是唯一的,如果使用相同的Id,javascript代码只引用第一个元素。但如果您仍想使用相同的id,则可以尝试以下代码:

$(function(){
   $('[id="total_row"]').each(function(){//run for every element having 'total_row' id
      var $this = $(this);
      $this.find('td').eq(1).text() //to get second column data
      $this.find('td').eq(1).text('dummy text') //to set second column data
   });
});

ID
在html页面中是唯一的。你可以称它为
ID
,也可以称它为wrt页面。在一个页面中,两个不同的标签不能有相同的
ID
。但是您可以使用
class
代替and
ID
。你知道吗

所以你的HTML可以是

<tr class='total_row'>
    <td>Total</td>
    <td>%(count)s</td>
    <td>%(Pass)s</td>
    <td>%(fail)s</td>
    <td>%(error)s</td>
    <td>&nbsp;</td>
</tr>

全部的
%(计数)s
%(通过)s
%(失败)s
%(错误)s
以jquery为例,您可以执行如下操作:

<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>

<body>

<table>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>

</table>

<script src="jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
    $(".one").eq(0).find('td').eq(0).html("I'm tracked");
    // get 1st tr and get first td
    $(".one").eq(1).find('td').eq(1).html("I'm tracked");
    // get 2nd tr and get second td
    $(".one").eq(2).find('td').eq(0).html("I'm tracked");
    // get 3rd tr and get first td
});
</script>
</body>
</html>

$(文档).ready(函数(){
$(.one”).eq(0.find('td').eq(0.html(“我被跟踪”);
//获得第一个tr和第一个td
$(“.one”).eq(1).find('td').eq(1).html(“我被跟踪”);
//获得第二个tr和第二个td
$(“.one”).eq(2).find('td').eq(0).html(“我被跟踪”);
//获得第三个tr和第一个td
});

但是我想这种方法可能会很乏味。

ID在html页面中是唯一的。你可以称它为
ID
,也可以称它为wrt页面。在一个页面中,两个不同的标签不能有相同的
ID
。但是您可以使用
class
代替and
ID
。你知道吗

所以你的HTML可以是

<tr class='total_row'>
    <td>Total</td>
    <td>%(count)s</td>
    <td>%(Pass)s</td>
    <td>%(fail)s</td>
    <td>%(error)s</td>
    <td>&nbsp;</td>
</tr>

全部的
%(计数)s
%(通过)s
%(失败)s
%(错误)s
以jquery为例,您可以执行如下操作:

<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>

<body>

<table>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>

</table>

<script src="jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
    $(".one").eq(0).find('td').eq(0).html("I'm tracked");
    // get 1st tr and get first td
    $(".one").eq(1).find('td').eq(1).html("I'm tracked");
    // get 2nd tr and get second td
    $(".one").eq(2).find('td').eq(0).html("I'm tracked");
    // get 3rd tr and get first td
});
</script>
</body>
</html>

$(文档).ready(函数(){
$(.one”).eq(0.find('td').eq(0.html(“我被跟踪”);
//获得第一个tr和第一个td
$(“.one”).eq(1).find('td').eq(1).html(“我被跟踪”);
//获得第二个tr和第二个td
$(“.one”).eq(2).find('td').eq(0).html(“我被跟踪”);
//获得第三个tr和第一个td
});

但是我想这种方法可能会很乏味。

ID在html页面中是唯一的。你可以称它为
ID
,也可以称它为wrt页面。在一个页面中,两个不同的标签不能有相同的
ID
。但是您可以使用
class
代替and
ID
。你知道吗

所以你的HTML可以是

<tr class='total_row'>
    <td>Total</td>
    <td>%(count)s</td>
    <td>%(Pass)s</td>
    <td>%(fail)s</td>
    <td>%(error)s</td>
    <td>&nbsp;</td>
</tr>

全部的
%(计数)s
%(通过)s
%(失败)s
%(错误)s
以jquery为例,您可以执行如下操作:

<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>

<body>

<table>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>

</table>

<script src="jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
    $(".one").eq(0).find('td').eq(0).html("I'm tracked");
    // get 1st tr and get first td
    $(".one").eq(1).find('td').eq(1).html("I'm tracked");
    // get 2nd tr and get second td
    $(".one").eq(2).find('td').eq(0).html("I'm tracked");
    // get 3rd tr and get first td
});
</script>
</body>
</html>

$(文档).ready(函数(){
$(.one”).eq(0.find('td').eq(0.html(“我被跟踪”);
//获得第一个tr和第一个td
$(“.one”).eq(1).find('td').eq(1).html(“我被跟踪”);
//获得第二个tr和第二个td
$(“.one”).eq(2).find('td').eq(0).html(“我被跟踪”);
//获得第三个tr和第一个td
});

但是我想这种方法可能会很乏味。

ID在html页面中是唯一的。你可以称它为
ID
,也可以称它为wrt页面。在一个页面中,两个不同的标签不能有相同的
ID
。但是您可以使用
class
代替and
ID
。你知道吗

所以你的HTML可以是

<tr class='total_row'>
    <td>Total</td>
    <td>%(count)s</td>
    <td>%(Pass)s</td>
    <td>%(fail)s</td>
    <td>%(error)s</td>
    <td>&nbsp;</td>
</tr>

全部的
%(计数)s
%(通过)s
%(失败)s
%(错误)s
以jquery为例,您可以执行如下操作:

<!DOCTYPE html>
<html>
<head>
<style>
</style>
</head>

<body>

<table>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>
    <tr class="one">
        <td></td>
        <td></td>
    </tr>

</table>

<script src="jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
    $(".one").eq(0).find('td').eq(0).html("I'm tracked");
    // get 1st tr and get first td
    $(".one").eq(1).find('td').eq(1).html("I'm tracked");
    // get 2nd tr and get second td
    $(".one").eq(2).find('td').eq(0).html("I'm tracked");
    // get 3rd tr and get first td
});
</script>
</body>
</html>

$(文档).ready(函数(){
$(.one”).eq(0.find('td').eq(0.html(“我被跟踪”);
//获得第一个tr和第一个td
$(“.one”).eq(1).find('td').eq(1).html(“我被跟踪”);
//获得第二个tr和第二个td
$(“.one”).eq(2).find('td').eq(0).html(“我被跟踪”);
//获得第三个tr和第一个td
});
但是我想这种方法可能会很乏味。

您可以使用XHTML:

<p id="foo" xml:id="bar">

通过XHTML,您可以将类似的ID应用于多个控件

类似的问题可以在这里找到:

您可以使用XHTML:

<p id="foo" xml:id="bar">

通过XHTML,您可以将类似的ID应用于多个控件

类似的问题可以在这里找到:

您可以使用XHTML:

<p id="foo" xml:id="bar">

通过XHTML,您可以将类似的ID应用于多个控件

类似的问题可以在这里找到:

您可以使用XHTML:

<p id="foo" xml:id="bar">

通过XHTML,您可以将类似的ID应用于多个控件

类似的问题可以在这里找到:


虽然重复ID无效,但可以容忍并解决它们。它们实际上只是使用document.getElementById时的一个问题

我猜这张桌子看起来像:

<table id="t0">
  <tr>
    <td>-<th>count<th>Pass<td>Fail<td>Error<td>
  <tr>
    <td>-<td>1<td>1<td>0<td>0<td>&nbsp;
  <tr>
    <td>-<td>1<td>1<td>0<td>0<td>&nbsp;
  <tr id='total_row'>
    <td>Total<td><td><td><td><td>
  <tr>
    <td>-<td>1<td>1<td>0<td>0<td>&nbsp;
  <tr>
    <td>-<td>1<td><td>1<td>0<td>&nbsp;
  <tr>
    <td>-<td>1<td><td>0<td>1<td>&nbsp;
  <tr id='total_row'>
    <td>Total<td><td><td><td><td>
</table>

<button onclick="calcTotals();">Calc totals</button>

-countPassFailError
-1100 
-1100 
全部的
-1100 
-110 
-101 
全部的
计算总数
如果这是正确的,那么添加每个小节的函数可以如下所示:

function calcTotals(){
  var table = document.getElementById('t0');
  var rows = table.rows;
  var row, totals = [0,0,0,0];

  // For every row in the table (skipping the header row)
  for (var i=1, iLen=rows.length; i<iLen; i++) {
    row = rows[i];

    // If it's a total row, write the totals and
    // reset the totals array
    if (row.id == 'total_row') {
      for (var j=0, jLen=totals.length; j<jLen; j++) {
        row.cells[j+1].innerHTML = totals[j];
        totals[j] = 0;
      }

    // Otherwise, add values to the totals
    } else {
      for (var k=0, kLen=totals.length; k<kLen; k++) {
        totals[k] += parseInt(row.cells[k + 1].innerHTML) || 0;
      }
    }
  }
}
函数calcTotals(){
var table=document.getElementB