- ベストアンサー
name属性とid属性の違い。DOMの概念?
name属性とid属性の違いは何なのでしょうか。特にid属性についてよくわかりません。 本を読むと、「これからはDOMというオブジェクトの構造モデルが主流になる。DOMではオブジェクトをid属性で特定できる。」というようなことが載っていました。また、「id属性はname属性と同じようなもの」とも書いてありました。 そこで、あるオブジェクトに対し、"name="ではなく"id="として名前をつけました。そしてそのオブジェクトのidを指定して扱おうとしたのですがうまくいきません。 name=idではないのでしょうか。idはどのように使えばよいのでしょうか。idを利用する際の注意点等を教えていただければと思います。 (私の環境はwindows98、IE6です。)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
formにidを設定してみました。 <html> <head> <title>nameとid3</title> <script language="JavaScript"> <!-- function pushFunc(){ alert("formのid呼出"+document.all.form1.Id_Object.value); } // --> </script> </head> <body> <form id="form1"> <input type="text" name="Name_Object" id="Id_Object" value="9999999999"> <input type="button" value="押す" onClick="pushFunc()"> </form> </body> </html> document.all.form1.Id_Object.value こうするとアクセスできました。 参考になれば。
その他の回答 (4)
- Tetroxide
- ベストアンサー率0% (0/1)
NAME属性はSubmit出来ないタグ(TR,TD等)に対して正しく設定できない様です。 ID属性はどのタグにも設定できます。 経験上からですが、Submit出来ないタグに対してもNAME属性は付けられますが、document.getElementsByName("<タグ名>")等のDOM系のメソッドで正しく取得する事が出来ませんでした。
- torakiyojp
- ベストアンサー率58% (25/43)
興味を持ったので、以下のようなスクリプトを作ってみました。 <html> <head> <title>nameとid</title> <script language="JavaScript"> <!-- function pushFunc(){ alert("name呼出(all):"+document.all.Name_Object.value); alert("id呼出(all):"+document.all.Id_Object.value); alert("name呼出(form):"+document.form1.Name_Object.value); alert("id呼出(form):"+document.form1.Id_Object.value); } // --> </script> </head> <body> <form name="form1"> <input type="text" name="Name_Object" id="Id_Object" value="9999999999"> <input type="button" value="押す" onClick="pushFunc()"> </form> </body> </html> テキストボックスについては、どちらでも認識してくれるようです。 ><input>にidを設定し、JavaScript で呼び出そうとしたのですが、うまくいきませんでした(nameではうまくいきます)。 とありますが、どのオブジェクトに対してどのような処理をしようとしたか教えてください。
>これはなぜでしょうか。 厳密には同じ物ではないからです。 NAME="" は単にタグに名前をつけるための属性です。 それに対し、ID="" はあくまでシステムIDを割り当てるための属性で、これらは考え方自体が違う物です。 ただ、JavaScript 上では「同じ物として扱った方が都合がいい」という理由で、わざと区別をつけていないだけです。 なので、ID="" の代わりに NAME="" が使えなかったり、逆だったりするのは当然の事です。 HTML上ではこれらは別々のものとして扱われています。
JavaScript 上では特に意識する必要はありません。 ただし、タグによってサポートしているオプションが「NAME=」である場合と「ID=」である場合があり、書き分けなくてはいけません。 同じものとして扱えるのは、JavaScript のインタプリタが ID と NAME を同じ物として扱うからで、データ上は別々の領域に格納されています。
補足
要素ごとにnameとidを使い分ける必要があるということですね。 そこで、どういう要素にid属性が利用できるのか調べました。するとidは共通属性であり多くの要素に使用できることがわかりました。しかし、実際のところ<input>にidを設定し、JavaScript で呼び出そうとしたのですが、うまくいきませんでした(nameではうまくいきます)。これはなぜでしょうか。 id属性の扱い方か何かが違うのでしょうか?
補足
具体的なアドバイスありがとうございます。(返事が遅くなって申し訳ありません。) 確かに、 <input type="text" name="Name_Object" id="Id_Object" value="9999999999"> のように<input>のidは使えました。自分のスクリプトでも問題ありませんでした。 ただ、自分のスクリプトでは、<form>にもnameではなくidを設定していました。それが不具合の原因だと思います。ここでまた新たな疑問が出てくるのですが、<form>にはidが設定できないのでしょうか。それとも、jsの方での指定の仕方がおかしいのでしょうか。 もしよければ、もう少しお付き合いしていただければと思います。