Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.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 如何迭代<;中的某些TH元素;thead>&书信电报;tr>;_Javascript_Loops_Html Table_Columnheader - Fatal编程技术网

Javascript 如何迭代<;中的某些TH元素;thead>&书信电报;tr>;

Javascript 如何迭代<;中的某些TH元素;thead>&书信电报;tr>;,javascript,loops,html-table,columnheader,Javascript,Loops,Html Table,Columnheader,假设有6个th元素 <thead> <tr><th></th><th></th><th></th> <th></th><th></th><th></th></tr> </thead> 我只想迭代前4个。如何获得这些元素的可编辑列表,以便执行以下操作: while (

假设有6个
th
元素

    <thead>
      <tr><th></th><th></th><th></th> <th></th><th></th><th></th></tr>
    </thead>

我只想迭代前4个。如何获得这些元素的可编辑列表,以便执行以下操作:

    while (i < myLimit) {
          th = thlist[i];
          // do something : if somecondition myLimit +=1;
          i++;
    }
    return i;
function getStyle(elem, cssprop, cssprop2){
 // IE
 if (elem.currentStyle) {
   return elem.currentStyle[cssprop];

 // other browsers
 } else if (document.defaultView &&
                   document.defaultView.getComputedStyle) {
   return document.defaultView.getComputedStyle(elem,
null).getPropertyValue(cssprop2);

 // fallback
 } else {
   return null;
 }
}


var ths = document.getElementsByTagName('th');
var myLimit = 4;

var max = ths.length;

if (myLimit>max)
    myLimit = max;

for (var i = 0;i < myLimit; i++) {
    // do something with myarray[i]
    var th = ths[i];
    if (getStyle(th,'display','display')=='none')
        alert('th in position '+i+' is decorated with display:none');
}
var limit = 4,
    $ths = $('th:not(:nth-child('+limit+') ~ th)', 'thead');
while(i
th
元素是用style=“display:none”修饰的,其中一些元素是经过修饰的,我试图找出任意选择的元素左侧有多少这样修饰的
th
元素


注意:myLimit可能必须在迭代期间增加

您可以使用getElementByTagName javascript纯函数,如下所示:

    while (i < myLimit) {
          th = thlist[i];
          // do something : if somecondition myLimit +=1;
          i++;
    }
    return i;
function getStyle(elem, cssprop, cssprop2){
 // IE
 if (elem.currentStyle) {
   return elem.currentStyle[cssprop];

 // other browsers
 } else if (document.defaultView &&
                   document.defaultView.getComputedStyle) {
   return document.defaultView.getComputedStyle(elem,
null).getPropertyValue(cssprop2);

 // fallback
 } else {
   return null;
 }
}


var ths = document.getElementsByTagName('th');
var myLimit = 4;

var max = ths.length;

if (myLimit>max)
    myLimit = max;

for (var i = 0;i < myLimit; i++) {
    // do something with myarray[i]
    var th = ths[i];
    if (getStyle(th,'display','display')=='none')
        alert('th in position '+i+' is decorated with display:none');
}
var limit = 4,
    $ths = $('th:not(:nth-child('+limit+') ~ th)', 'thead');
函数getStyle(elem、cssprop、cssprop2){ //即 if(元素当前样式){ 返回元素currentStyle[cssprop]; //其他浏览器 }else if(document.defaultView&& document.defaultView.getComputedStyle){ return document.defaultView.getComputedStyle(elem, null)。getPropertyValue(cssprop2); //退路 }否则{ 返回null; } } var ths=document.getElementsByTagName('th'); var myLimit=4; var max=长度; 如果(myLimit>最大值) myLimit=最大值; 对于(var i=0;i
下面是一个实际工作的示例

您可以使用getElementByTagName javascript纯函数,如下所示:

    while (i < myLimit) {
          th = thlist[i];
          // do something : if somecondition myLimit +=1;
          i++;
    }
    return i;
function getStyle(elem, cssprop, cssprop2){
 // IE
 if (elem.currentStyle) {
   return elem.currentStyle[cssprop];

 // other browsers
 } else if (document.defaultView &&
                   document.defaultView.getComputedStyle) {
   return document.defaultView.getComputedStyle(elem,
null).getPropertyValue(cssprop2);

 // fallback
 } else {
   return null;
 }
}


var ths = document.getElementsByTagName('th');
var myLimit = 4;

var max = ths.length;

if (myLimit>max)
    myLimit = max;

for (var i = 0;i < myLimit; i++) {
    // do something with myarray[i]
    var th = ths[i];
    if (getStyle(th,'display','display')=='none')
        alert('th in position '+i+' is decorated with display:none');
}
var limit = 4,
    $ths = $('th:not(:nth-child('+limit+') ~ th)', 'thead');
函数getStyle(elem、cssprop、cssprop2){ //即 if(元素当前样式){ 返回元素currentStyle[cssprop]; //其他浏览器 }else if(document.defaultView&& document.defaultView.getComputedStyle){ return document.defaultView.getComputedStyle(elem, null)。getPropertyValue(cssprop2); //退路 }否则{ 返回null; } } var ths=document.getElementsByTagName('th'); var myLimit=4; var max=长度; 如果(myLimit>最大值) myLimit=最大值; 对于(var i=0;i
下面是一个工作的实例

您可以像这样收集前4个(或n个)元素:

    while (i < myLimit) {
          th = thlist[i];
          // do something : if somecondition myLimit +=1;
          i++;
    }
    return i;
function getStyle(elem, cssprop, cssprop2){
 // IE
 if (elem.currentStyle) {
   return elem.currentStyle[cssprop];

 // other browsers
 } else if (document.defaultView &&
                   document.defaultView.getComputedStyle) {
   return document.defaultView.getComputedStyle(elem,
null).getPropertyValue(cssprop2);

 // fallback
 } else {
   return null;
 }
}


var ths = document.getElementsByTagName('th');
var myLimit = 4;

var max = ths.length;

if (myLimit>max)
    myLimit = max;

for (var i = 0;i < myLimit; i++) {
    // do something with myarray[i]
    var th = ths[i];
    if (getStyle(th,'display','display')=='none')
        alert('th in position '+i+' is decorated with display:none');
}
var limit = 4,
    $ths = $('th:not(:nth-child('+limit+') ~ th)', 'thead');
然后以.each()为例进行迭代:

或另一种方法:

var limit = 4,
    $ths = $('th', 'thead');

$ths.each( function() {
    var id = $(this).index();
    if(id < limit) {
        console.log(this);
        // increase limit on certain condition
        if(id == 2) limit++;
    }
});

return limit;

您可以像这样收集前4个(或n个)元素:

    while (i < myLimit) {
          th = thlist[i];
          // do something : if somecondition myLimit +=1;
          i++;
    }
    return i;
function getStyle(elem, cssprop, cssprop2){
 // IE
 if (elem.currentStyle) {
   return elem.currentStyle[cssprop];

 // other browsers
 } else if (document.defaultView &&
                   document.defaultView.getComputedStyle) {
   return document.defaultView.getComputedStyle(elem,
null).getPropertyValue(cssprop2);

 // fallback
 } else {
   return null;
 }
}


var ths = document.getElementsByTagName('th');
var myLimit = 4;

var max = ths.length;

if (myLimit>max)
    myLimit = max;

for (var i = 0;i < myLimit; i++) {
    // do something with myarray[i]
    var th = ths[i];
    if (getStyle(th,'display','display')=='none')
        alert('th in position '+i+' is decorated with display:none');
}
var limit = 4,
    $ths = $('th:not(:nth-child('+limit+') ~ th)', 'thead');
然后以.each()为例进行迭代:

或另一种方法:

var limit = 4,
    $ths = $('th', 'thead');

$ths.each( function() {
    var id = $(this).index();
    if(id < limit) {
        console.log(this);
        // increase limit on certain condition
        if(id == 2) limit++;
    }
});

return limit;

访问表中的行和单元格的一种简单方法是使用内置属性。通常,标题位于第一行(您的问题就是这种情况),因此ths是表中包含的单元格。行[0]:

var table=document.getElementById("myTable"),
    i=0,
    count=0,
    myLimit=4;
while (i < myLimit) {
    if (table.rows[0].cells[i].style.display=="none") { count ++; }
    i++;
}
return count;
var table=document.getElementById(“myTable”),
i=0,
计数=0,
myLimit=4;
而(i
访问表中的行和单元格的简单方法是使用内置属性。通常,标题位于第一行(您的问题就是这种情况),因此ths是表中包含的单元格。行[0]:

var table=document.getElementById("myTable"),
    i=0,
    count=0,
    myLimit=4;
while (i < myLimit) {
    if (table.rows[0].cells[i].style.display=="none") { count ++; }
    i++;
}
return count;
var table=document.getElementById(“myTable”),
i=0,
计数=0,
myLimit=4;
而(i
我从sandino的解决方案开始,使用Christophe的检查来显示none样式

这种情况的一个棘手之处是我使用了剑道网格,它将网格分成两个表,一个用于标题行,另一个用于正文行。如果某些列被隐藏,则这两个表的列数可能不同,因为主体网格仅包含可见列,而标题网格甚至包含不可见列的定义

假设网格中有12列,前7列是隐藏的。标题网格包含所有12个,前7个用display:none装饰。内容网格仅包含5个可见列。因此,当用户单击第一个可见列索引0时,它实际上对应于标题网格中的第八列(基于0,因此索引=7)

要查找与VisibleIndex 0对应的列标题,我们必须在单击单元格的索引中添加左侧隐藏列的数量。我们将7与0相加得到7

 function countHiddenColumnHeadersLeft(id, clickedCellIndex) {    
    var ths = document.getElementById(id).getElementsByClassName('k-header');
    var myLimit = clickedCellIndex;   


    var invisicount = 0;

    for (var i = 0; (i < myLimit) ; i++) {        
      var th = ths[i];
      if (th.style.display == 'none') {
            invisicount++;
            myLimit++;
        }        
    }
    return invisicount;
}
函数countHiddenColumnHeadersLeft(id,clickedCellIndex){
var ths=document.getElementById(id.getElementsByClassName('k-header');
var myLimit=clickedCellIndex;
var invisicount=0;
对于(var i=0;(i
我从sandino的解决方案开始,使用Christophe的检查来显示none样式

这种情况的一个棘手之处是我使用了剑道网格,它将网格分成两个表,一个用于标题行,另一个用于正文行。如果某些列被隐藏,则这两个表的列数可能不同,因为主体网格仅包含可见列,而标题网格甚至包含不可见列的定义

假设网格中有12列,前7列是隐藏的。标题网格包含所有12个,前7个用display:none装饰。内容网格仅包含5个可见列。因此,当用户单击第一个可见列索引0时,它实际上对应于标题网格中的第八列(基于0,因此索引=7)

要查找与VisibleIndex 0对应的列标题,我们必须将hidd的数量添加到已单击单元格的索引中