-1

[すべて] をクリックすると、テーブルのさまざまな行にあるすべてのli要素を取得したいと考えています。ここではli、1 行のすべての要素を取得します。

<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';
    }
}  
4

1 に答える 1

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 のような大文字のタグ文字列です。<table>while ループは、DOM ツリーをたどってタグを探しているだけです。テーブル タグが見つかるとすぐに、current.tagName が TABLE になり、条件が失敗し、関数が要素を返すことが許可されます。に渡された要素の上に table 要素がない場合に備えて、DOM の先頭であるノードfindParentalTableに到達していないことも確認します。完全な参照一致をチェックします (一般に、 と を使用することをお勧めします)。document!==!=====

于 2012-04-05T13:06:30.933 に答える