gpt4 book ai didi

javascript - attachEvent 不能使用这个 javascript

转载 作者:行者123 更新时间:2023-11-30 08:09:31 25 4
gpt4 key购买 nike

我需要交叉兼容 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 字段。我假设这是因为它只有最后一个对象的值。不知道下一步该做什么

最佳答案

http://jsfiddle.net/KAy9a/

function wireUp() {
console.log('wiring');
var x = document.getElementsByTagName("textarea");
var ent;
for (i = 0; i < x.length; i++) {
if (x.item(i).addEventListener) {
x.item(i).addEventListener("keyup", ChangeDepth, false)
x.item(i).addEventListener("mouseup", ChangeDepth, false)
x.item(i).addEventListener("change", ChangeDepth, false)
}
else {
x.item(i).attachEvent("onkeyup", ChangeDepth);
x.item(i).attachEvent("onmouseup", ChangeDepth);
x.item(i).attachEvent("onchange", ChangeDepth);

}
}
}

function ChangeDepth(e) {
// instead of passing in the element, we get the Event object
// we can then get the event target (or srcElement) to know where the event came from
e = e || event;
e = e.target || e.srcElement;

// the code below is the same you had before:
var t = e.scrollHeight + 'px';
if ((e.clientHeight < e.scrollHeight) || (e.clientHeight > e.scrollHeight)) {
e.style.height = t;
}
}

关于javascript - attachEvent 不能使用这个 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12572404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com