次のjsFiddleを検討してください-http ://jsfiddle.net/mark69_fnd/rcCeG/17/
YUIを利用していますが、コードはかなり明確である必要があります。
YUI().use('node', function (Y){
var td = Y.one('#replaceMe'),
newTd = Y.Node.create('<td><input/></td>'),
w = td.getDOMNode().getBoundingClientRect().width,
inputNode = newTd.one('input');
w -= parseFloat(td.getComputedStyle('paddingLeft')) || 0;
w -= parseFloat(td.getComputedStyle('paddingRight')) || 0;
w -= 2 * parseFloat(td.getComputedStyle('borderWidth')) || 0;
newTd.setStyle('width', w + 'px');
w -= 2 * parseFloat(inputNode.getComputedStyle('borderWidth')) || 0;
inputNode.setStyle('width', w + 'px');
td.replace(newTd);
});
これは、指定されたテーブルのセルを、入力ボックスを含む別のセルに置き換えます。
ここで、テーブルサイズを維持するために置換するために、いくつかの幅の計算を実行する必要がありました。特に気になるのは、CSSで100%に設定されていても、入力の幅を明示的に設定する必要があったことです。
table, td, th {
border: solid 1px black;
}
table td, table th {
padding: 2px;
}
input {
border: 1px solid #cbcbcb;
background-color: #FFFEBB;
width: 100%;
height: 100%;
}
私がそれを設定しないと、それは醜く見えます-正しいパディングは尊重されず、私はその理由を理解していません。
テーブルのサイズを維持しながら、あるセルを別のセルに置き換える正しい方法を教えてください。