<button id="ButtonA" onChange="ResizeButtons();">Hello</button>
<button id="ButtonB" onChange="ResizeButtons();">Worlddddddddddddddd</button>
<script type="text/javascript">
function getWidth(element) {
return parseInt(window.getComputedStyle ? window.getComputedStyle(element,null).getPropertyValue("width") : element.currentStyle.width );
}
function ResizeButtons() {
var buttonA = document.getElementById("ButtonA");
var buttonB = document.getElementById("ButtonB");
buttonA.style.width = "auto";
buttonB.style.width = "auto";
var buttonAWidth = getWidth(buttonA);
var buttonBWidth = getWidth(buttonB);
var maxWidth = (buttonAWidth > buttonBWidth ? buttonAWidth: buttonBWidth) + "px";
buttonA.style.width = maxWidth;
buttonB.style.width = maxWidth;
}
</script>
1)クロスブラウザ。
2)計算前に要素を「自動」にリセットします。そうしないと、最初の文字が入力された後、要素のサイズが変更されることはありません。
buttonA
3)とを取得した後にDOMに再アクセスすることを回避しbuttonB
ます。
4)各ボタンが変更されている間チェックします。
編集
ResizeButtons();
ボタンのコンテンツを変更するために使用している入力にイベントを配置する必要がある場合があります。さらにResizeButtons()
、コンテンツが変更された直後に、ボタンのコンテンツを変更する現在のスクリプト内で関数を実行するだけです。