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

Javascriptにおいて、TRタグが入れ子状態になっている時に、
「childNodes」で子供のTRタグを取得することはできないので
しょうか?具体的には、以下のようなスクリプトを組んだ場合に、
c_obj_list[3] には子供のTRタグが格納されるのかと思ったのです
が、そうはならないようです。子供のTRタグ配下のタグに操作を
行いたいのですが、どうやったら子供のTRタグ配下のタグに辿り
着くでしょうか?

******************************
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"></meta>
<title></title>

<script>

function func(obj){
var p_obj=obj.parentNode;
var pp_obj=p_obj.parentNode;
var c_obj_list=pp_obj.childNodes;
alert("c0="+c_obj_list[0].nodeName);
alert("c1="+c_obj_list[1].nodeName);
alert("c2="+c_obj_list[2].nodeName);
alert("c3="+c_obj_list[3].nodeName);
}

</script>
</head>

<body>

<table col="4">
<tr>
<td><input type="checkbox" onclick="func(this)"/></td>
<td colspan="2"><textarea style="width:298px;overflow:hidden;">あああ</textarea></td>
<td><textarea style="width:300px;overflow:hidden;" >いいい</textarea></td>
<tr>
<td width="20"></td>
<td><input type="checkbox" onclick="func(this)"/></td>
<td><textarea style="width:274px;overflow:hidden;">ううう</textarea></td>
<td><textarea style="width:300px;overflow:hidden;" >えええ</textarea></td>
</tr>
</tr>
</table>

</body>
</html>

A 回答 (2件)

tr要素は入れ子になる要素ではありません。

Javascriptではなく、htmlに関する理解の問題です。

実際、Firefox, Opera, IEではtr要素は入れ子になるとは解釈されず、2つのtr要素が並列にある(2行ある)として解釈されるようです。その結果、tr要素の子要素としてtr要素を探しても見つからないことになります。
    • good
    • 0
この回答へのお礼

ご返事が遅くなりました.
<tr>の理解を間違えていたようです。
ただ、どうしても入れ子で使いたい訳があるため、
ご指摘の内容をうけて「childNodes」ではなく
「nextSibling」を使用したら、やりたいことが
できるようになりました。

ありがとうございました!!

お礼日時:2009/05/30 19:54

<tr>の子要素は<th>、<td>のどちらかなのでは?



表示上どうしてもtrを入れ子にしたいのなら、子要素としてtableを入れることになりますが、その場合でも、
 <tr><table></table></tr>  ではなく、
 <tr><td><table></table></td></tr>
になると思われます。
    • good
    • 0
この回答へのお礼

ご返事が遅くなりました.
<tr>の理解を間違えていたようです。
テーブルの入れ子も考えたのですが、思った通りの表示にならない
ため、<tr>の入れ子で頑張っています。
やりたいことは、「childNodes」ではなく
「nextSibling」を使用してできるようになりました。

ありがとうございました!!

お礼日時:2009/05/30 19:57

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