テーブルのセルを「編集ボックス」と「値の表示」で入れ替えられるようにする
要ははてなグラフみたいな事がしたかった訳です。
http://d.hatena.ne.jp/kcha/20080619/1213854498の改善版です。
前回のコードは色々と間抜け
だと自分でも思います。最初から「編集」の領域と、「表示」の領域の2つをdivで入れておいて、片方のstyle属性をdisplay:noneしておけば簡単だったのに。
まずは指定箇所のHTMLコード。(必要な箇所しか書きません)
<table> <tr> <td> <div id="value" onclick="Up();">123</div> <div id="input" style="display:none;"> <form style="display:inline;"> <input type="text" id="text" value="123" onblur="Down();"> </form> </div> </td> </tr> </table>
んでjavascriptはこう。
function Up(){ $("value").style.display = "none"; $("input").style.display = "inline"; $("text").select(); } function Down(){ $("value").innerHTML = $("text").value; $("value").style.display = "inline"; $("input").style.display = "none"; }
HTML側のformタグですが、style属性にdisplay:inlineを打っておく必要がありました。でないと、入力欄が出た際に下方向に拡張されてしまいます。(IEでしか確認してませんが)
あいかわらずCSSの勉強が未だです。はよやらんと。