テーブルのセルを入力欄を入力値の表示で切り替える

コードを書いてみました。セル(というか数値)をクリックすると入力欄に切り替わり、フォーカスを外すとその時の値で確定します。


が、何か格好悪い。
もっとスマートな方法がありそうですが。

<html>
<head>
<script type="text/javascript"><!--
function InputUp(cell){
    var valueCell = cell + "-value";
    var inputCell = cell + "-input";
    
    var text = document.getElementById(valueCell).innerHTML;
    document.getElementById(valueCell).innerHTML = '';
    
    var text = '<input type="text" id="input_area" onblur="InputDown(\'' + cell+ '\');" value="' + text + '">';
    //window.alert(text);
    document.getElementById(inputCell).innerHTML = text;
    document.getElementById("input_area").focus();
}

function InputDown(cell){
    var valueCell = cell + "-value";
    var inputCell = cell + "-input";
    
    var text = document.getElementById("input_area").value;
    
    document.getElementById(inputCell).innerHTML = '';
    document.getElementById(valueCell).innerHTML = text;
}
//--></script>
</head>
<body>
<table border="1" cellspacing="1">
    <tbody>
        <tr>
            <td>
                <span id="1-1-value" onclick="InputUp('1-1');">12</span><span id="1-1-input"></span>
            </td>
            <td>
                <span id="1-2-value" onclick="InputUp('1-2');">12</span><span id="1-2-input"></span>
            </td>
        </tr>
    </tbody>
</table>

</body>
</html>

あと、入力値を空で確定すると、領域(幅?)がなくなるので次回の編集に入れなくなる。
cssきちんとして、幅を取ればいいのだろうけど。


追記
パラグラフ単位でこのエントリを見ようとすると、javascript部分が消えるようです。日付単位で閲覧してください。