我需要跨兼容性 IE7 向上对于事件侦听器。由于我使用的系统,我只能使用外部 js 文件来创建侦听器。我希望为所有 textarea 框创建一个规则,使它们在包装文本时增加高度,这意味着您永远不必滚动(它们需要打印所有显示的文本)。使用 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 字段。我假设这是因为它只有最后一个对象的值。不知道下一步该做什么