イベントリスナーにはクロス互換性IE7以上が必要です。私が使用しているシステムのため、リスナーの作成には外部 js ファイルしか使用できません。すべてのテキストエリアボックスのルールを作成して、テキストをラップするときに高さを増やして、スクロールする必要がないことを意味します(すべてのテキストが表示された状態で印刷する必要があります)。これは addEventListener を使用して正常に動作しますが、THIS を使用できないため、attachEvent を使用してこれを一般的に動作させることはできません。
<html>
<style>
input[type="text"], textarea{ width:10%;}
</style>
<script>
function gettext(){
var x=document.getElementsByTagName("textarea");
var ent;
for(i = 0; i < x.length; i++){
if (x.item(i).addEventListener) {
x.item(i).addEventListener("keyup", function () {ChangeDepth(this)}, false)
x.item(i).addEventListener("mouseup", function () {ChangeDepth(this)}, false)
x.item(i).addEventListener("change", function () {ChangeDepth(this)}, false)
}
else {
ent = document.getElementById(x.item(i).id)
x.item(i).attachEvent ("onkeyup", function () {ChangeDepth(ent)});
x.item(i).attachEvent ("onmouseup", function () {ChangeDepth(ent)});
x.item(i).attachEvent ("onchange", function () {ChangeDepth(ent)});
}
}
}
function ChangeDepth(e){
var t = e.scrollHeight +'px';
if ((e.clientHeight < e.scrollHeight)||(e.clientHeight > e.scrollHeight)){e.style.height = t ;}
}
</script>
<body onload="gettext()">
<p>(Type in the textarea box when the text wraps it will increase the height of the box)<br />
<textarea name="c" cols="" rows="1" id="c" ></textarea>
<br />
<textarea name="f" cols="" rows="1" id="f" ></textarea></p>
</body>
</html>
これは、IE 8 の最後の textarea フィールドでのみ機能します。最後のオブジェクトの値しかないため、これを想定しています。次に何をすべきかわからない