获取表中所有行的li元素

时间:2012-04-05 12:46:59

标签: javascript html

当我点击All时,我希望得到不同行表中的所有li个元素。在这里,我获得了一行的所有li元素。

<ul class="clsInfo">
  <li id="liAll" onclick="Activelink(this);">
    <a href="#">
      <label id="lblAll">All</label>
    </a>
  </li>
</ul>

代码:

function Activelink(sender) {
    var a_elements = sender.parentNode.getElementsByTagName("a");
    for (var i = 0, len = a_elements.length; i < len; i++) {
        a_elements[i].style.color = 'black';
    }
}  

1 个答案:

答案 0 :(得分:1)

您描述了li元素和表格,但您的代码正在设置a(锚点)标记的属性。如果您的“全部”链接嵌套在我们在html示例中看不到的表中,那么您需要通过循环找到它:

function findParentalTable(el) {
  var current = el;
  while((current !== document) && (current.tagName != "TABLE")) {
    current = current.parentNode;
  }
  return current;
}

然后你的代码将是

function Activelink(sender) {
  var parentalTable = findParentalTable(sender);
  var a_elements = parentalTable.getElementsByTagName("a");
  for (var i = 0, len = a_elements.length; i < len; i++) {
    a_elements[i].style.color = 'black';
  }
}  

元素的父节点是另一个DOM元素,并且所有DOM元素都具有属性tagName,它是大写的标记字符串,如TABLE。 while循环只是在DOM树中向上查找<table>标记。一旦找到表标记,current.tagName就会是TABLE,条件将失败,允许函数返回该元素。为了防止传递给findParentalTable的元素上方没有表元素,我还检查我们是否未到达DOM的顶部,即document节点; !==检查确切的参考匹配(通常使用!=====的良好做法)。