getElements ByName


(zt)http://baike.baidu.com/view/1743588.htm
 
 
getElements ByName()メソッドは、指定された名前を持つオブジェクトのセットを返すことができる。
文法document.getElementsByNameは、この方法はgetElementById()方法と似ているが、id属性ではなく、要素のname属性を問い合わせる。また、一つのドキュメントのname属性は、一つの要素ではなく、一つのフォームの単一選択ボタンのようなユニークではないかもしれないので、全てのgetElements ByName()メソッドは要素の配列を返します。一つの文書の中に二つ以上のラベルNAMEが同じであれば、getElementsByName()はこれらの要素から一つの配列を構成することができる。例えば二つのDIV:
では、getElementsByName("docname")を使ってこの二つのDIVを取得して、getElements[NantydotEdme]を使って、一つ目にアクセスすることができます。2番目のDIVにアクセスします。標準DOMをまとめて、ある特定の要素にアクセスして、できるだけ標準のgetElementById()を使って、ラベルにアクセスするための標準のgetElementByTagName()を使ってください。ただし、getElementsByNameはサポートされていません。だから、getElementsByByNameは使用しないようにします。無欠ではないです。彼らは自分の便利なところがあります。それを使わずにサイトを見ているユーザーがどのブラウザを使うかは自分で決めました。getElements ByNameをIEとfirefoxに適応させる方法:
getElementsByName:function (name) {
  var returns = document.getElementsByName(name);
  if(returns.length > 0) return returns;
  returns = new Array();
  var e = document.getElementsByTagName('td');
  for(i = 0; i < e.length; i++) {
  if(e[i].getAttribute("name") == name) {
  returns[returns.length] = e[i];
  }
  }
  return returns;
  }
 実例
<html>
  <head>
  <script type="text/javascript">
  function getElements()
  {
  var x=document.getElementsByName("myInput");
  alert(x.length);
  }
  </script>
  </head>
  <body>
  <input name="myInput" type="text" size="20" /><br />
  <input name="myInput" type="text" size="20" /><br />
  <input name="myInput" type="text" size="20" /><br />
  <br />
  <input type="button" onclick="getElements()"
  value="How many elements named 'myInput'?" />
  </body>
  </html> 
 上記は静止画ページに限られていますが、javascriptを用いて動的にページを生成すると、解決方法はまだ不明です。