DOMで孫オブジェクトを参照する時

[新着] Webテンプレートを仮オープンしました



0   名前: エドワード : 2007/09/10(月) 15:38  ID:/KilLWWi sub-DD
IE固有の書き方をしていたものをDOMで書き換えたいのですが。
悩んでおります、何方か御指導下さいますようお願いいたします。

以下の様な構成の時、
<tr id="list_tr"> <--複数行有りlist_trは配列になリます。
<td><INPUT type="checkbox" id="C1" /></td>
<td><INPUT type="checkbox" id="C2" /></td>
<td><INPUT type="checkbox" id="C3" /></td>
<td><INPUT type="checkbox" id="C4" /></td>
</tr>

ある行のC4の状態を調べたい時は以下で出来ましたが。
document.all.list_tr[i].all.C4.checked

DOMで記述したい場合。
<tr id="list_tr"+行番号>
<td><INPUT type="checkbox" id="C1" /></td>
<td><INPUT type="checkbox" id="C2" /></td>
<td><INPUT type="checkbox" id="C3" /></td>
<td><INPUT type="checkbox" id="C4" /></td>
</tr>

以下で特定のTR迄は参照出来ましたが。
document.getElementById("list_tr"+i)

TRを特定した後に、その孫になるC1〜C4の状態を知るには
どのように記述したらよいのでしょうか?

1   名前: Chips : 2007/09/10(月) 15:38  ID:iXTrKUp6 sub-FV
idならページ内に複数は存在してはいけないって事になっているので
document.getElementById("C"+j)
とかでいいはずですが、
質問のニュアンスからすると同じidのオブジェクトが複数あるのでしょうか?

孫って意味なら
document.getElementById("list_tr"+i).getElementById("C"+j)
みたいな事になるのかも。

ただ、tableについては配列でアクセスできるようになっているので
(親≒tableは除いて)idやらは消してしまってもいいかも。
http://www.doraneko.org/misc/dom10/19981001/level-one-html.html#ID-64060425

<table id="ABC"> があったとして
document.getElementById('ABC').row[i].cells[j]
とか

2   名前: Chips : 2007/09/10(月) 15:38  ID:iXTrKUp6 sub-FV
ちょっと勘違いしてた。
<input>を調べたいんでしたね。

inputであれば送信するためにidは要るでしょうから、idを全て固有の値に修正して
getElementByIdで得ればいいかと思います。



そのinputがformでの送信目的にあるわけじゃなくidの必要性がないなら
document.getElementById('ABC').row[i].cells[j].firstChild.checekd
とか。

ただ、HTMLのソース上で<td>と<input>の間に改行とかあると、firstChildはテキストノードになってしまうので
document.getElementById('ABC').row[i].cells[j].getElementByTagName('input')[0].checkd
とした方がいいかも。


3   名前: 匿名 : 2007/09/10(月) 15:38  ID:epW2eUw6 sub-8t
checekd、checkd、getElementByTagName、row……
多分分かってくれると思うけど、コピーするかもしれないのだからもう少し落ち着こうよ。

4   名前: エドワード : 2007/09/10(月) 15:38  ID:/KilLWWi sub-DD
Chips様
御返答有難う御座います。

TR中のTDの数はcolspan結合されている場合も有り
やはり
特定TR中のC4のような指定って出来ないものでしょうか?

また、話が最初に戻ってしまいますが。
TRを指定する時もgetElementByIdでlist_tr0では無くて
list_tr[0]のような配列での指定って出来ないのでしょうか?

どなたか御指導下さいますよう、よろしくお願いいたします。

5   名前: 匿名 : 2007/09/10(月) 15:38  ID:gaSskOiN sub-Cz
input 要素に id 属性を振ってんなら、getElementById('C1') で直に参照すれば良いじゃない。

何を悩んでいるのかよく分からない。id を消したいの?

# なお、全ての DOM ノードは、親から見て何番目の子か(childNodes[i])を辿っていくことで、必ず一意に決定される。だから、node.parentNode と node.childNodes さえ覚えれば、基本的に全てのノードに辿り着けることを知るべし(ただし属性ノードを除く)。


> TRを指定する時もgetElementByIdでlist_tr0では無くて
> list_tr[0]のような配列での指定って出来ないのでしょうか?

>>1-3

6   名前: エドワード : 2007/09/10(月) 15:38  ID:/KilLWWi sub-DD
皆さん御返答有難う御座います。
返答いただきながら、実は未だに実現出来ておりませんが。
時間をかけて解決させようと思っています。
有難う御座いました。

一覧へ戻る