アプリ版:「スタンプのみでお礼する」機能のリリースについて

よろしくお願いします。

getElementsByNameを使って要素数を取得しようとしています。
しかし、tableタグの数が入っていません。
tableタグになる、nameは無効になるのでしょうか?

<html>
<head>
<title>document.getElementsByName - 指定nameのエレメント全取得</title>
</head>

<!--指定nameのエレメント全取得のサンプル-->
<script type="text/javascript">
function getElements() {
var elements = document.getElementsByName("test")
alert(elements.length + "個の要素が見つかりました")
}
</script>
</head>
<body>
<input name="test" type="text"><br>
<table name="test"></table><br>
<input name="test" type="text"><br>

<button onclick="getElements()">getElementsByName('test')</button>

</html>

A 回答 (4件)

連続回答すみません。


俺が当時回答した2007年時のMDCの資料には

https://developer.mozilla.org/index.php?title=En …

>The name attribute is only valid for a limited set of HTML elements, therefore getElementsByName() is only applicable to those elements.

name属性は限られたHTMLの要素のセットでのみ有効であり,getElementsByNameの結果もこれらの要素に対してのみ適用される。
(訳注:ただし、当時Firefox自身がこの挙動に沿っていなかった)

と書いてあり,見かけたことある文章なので,#2で述べたものだと思います。確かこれを参考に当時回答を書きました。仕様の記述があいまいなため,2008年になってbug 242808で再燃しているんですね。

http://pastaseca.blog119.fc2.com/blog-entry-87.h …
回答はうまく返せないけど,回答当時の背景を記述しました。
    • good
    • 0

少なくともMozillaは違う見解を示しているっぽいので少し読みなおしてみる



#ちなみに2を返すのはIEだけ

https://developer.mozilla.org/en/DOM/document.ge …
    • good
    • 0

Q3598682が出るまで俺も勘違いしていた。


table要素にはname属性がありません。
http://www.w3.org/TR/html401/struct/tables.html# …

ちなみにHTML4.01とXHTML 1.0では定義が異なります。
http://www.w3.org/TR/DOM-Level-2-HTML/html.html# …

#Q3598682で回答したときは,HTMLで定義された以外の要素にはマッチしないものだって書いてあったのを見かけた気がするんだけど,今探しても見つからない
    • good
    • 0

そりゃ取れないだろうね


nameはdocument内にただ一つでなければならない物で、idとほぼ同等の挙動をするよ。
ただ一つ、と言ってもformの部品の様にグループ化するために同じ物を指定しなければならない場合が有るからgetElement「s」になってるだけだと思う。

body閉じタグが無いのは無視するとしてこの場合は
bodyのchildNodesという方法で取得して他の属性を埋め込んでおいて振り分けるしかないね。
どうしても考えるのがめんどいと言うならそういう整形xsltを通してしまうというのもアリだけれどこの分量くらいしか無いようなら返って手間になるだけだからchildNodesで かな。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!