重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

テーブルの中にあるテキストボックスのonchangeイベントの中で、このテキストボックスが最後の行(<tr>レベル)であることを知るにはどうすればいいでしょうか?

<table>
<tr><td><input type="text" onchange="islastline()"></td></tr>
<tr><td><input type="text" onchange="islastline()"></td></tr>
<tr><td><input type="text" onchange="islastline()"></td></tr>
</table>
この場合一番下のテキストボックスに入力したときだけTRUEを返してほしいのです。

A 回答 (3件)

#1です。


ちょっとまずかったので訂正。(thisを渡すのは同じ)

function islastline(obj){
var Tr = obj.parentNode.parentNode;
var Table = Tr.parentNode.parentNode;
return (Table.rows.length == Tr.rowIndex +1);
}
    • good
    • 0
この回答へのお礼

素早い回答ありがとうございました。
実はinnerHTMLでtableの行を増やそうとしたのですが、試行錯誤の結果tableにinnerHTMLを適用できないことがわかり、dlで代用しました。
そのため結果的には#1の方法を使わせていただきました。
また#1、#3の方法を元にNodeの概念などを学び非常に勉強になりました。

お礼日時:2007/08/08 20:12

最下行は、islastline(1)、その他は、islastline(0)としては駄目なのですか?

    • good
    • 0
この回答へのお礼

静的なHTMLページならこれで充分だったのですが、動的に変化するページであったためなかなか難解でした。
最初の説明が不足だったかもしれませんね、申し訳ありません。

お礼日時:2007/08/08 20:14

とりあえずthisを渡すように変更して。


<tr><td><input type="text" onchange="islastline(this)"></td></tr>
<tr><td><input type="text" onchange="islastline(this)"></td></tr>
<tr><td><input type="text" onchange="islastline(this)"></td></tr>

function islastline(obj){
if(obj.parentNode.panrentNode.nextSibling){
// inputの親(td)の親(tr)のnextSibling(次のtr)がnullでなければ最終行ではない。
return false;
} else {
return true;
}
}
    • good
    • 0

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