DOMで孫オブジェクトを参照する時
-
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
- 皆さん御返答有難う御座います。
返答いただきながら、実は未だに実現出来ておりませんが。
時間をかけて解決させようと思っています。
有難う御座いました。