<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<!--<html>-->
<head>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
</head>
<body>
<textarea style="overflow-y:auto; height: 50px;">sdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfdddddddddddddddddddddddddddd</textarea>
<button id="add">Add Textarea</button>
<button id="currentHeight">Current Height</button>
<button id="realHeight">Real Height</button>
</body>
<script>
$(function() {
$("textarea").each(function() {
$textarea = $(this);
var realHeight = $textarea.get(0).scrollHeight*2.7;
alert(realHeight);
if(realHeight > 100) {
$textarea.css("overflow-y", "auto");
$textarea.height(100);
}
});
/*$("textarea").keyup(function() {
if($textarea.height() > 100) {
$textarea.css("overflow-y", "auto");
$textarea.height(100);
}
});*/ $("#add").click(function() {
var html = "<textarea style='overflow-y:auto; height: 50px;'></textarea>";
$("body").append(html);
}); $("#currentHeight").click(function() {
alert($("textarea:first").height());
}); $("#realHeight").click(function() {
alert($("textarea:first").get(0).scrollHeight);
}); $(document).on("keyup", "textarea", function() {
var $textarea = $(this);
var realHeight = $textarea.get(0).scrollHeight;
var currentHeight = $textarea.height();
if(realHeight > 100) {
$textarea.css("overflow-y", "auto");
} else {
$textarea.css("overflow-y", "visible");
}
if(realHeight > 100) {
$textarea.height(100);
} else {
if(realHeight > 50) {
$textarea.height($textarea.get(0).scrollHeight);
} else {
$textarea.height(50);
}
}
//alert($textarea.height());
$textarea.css("overflow-y", "auto");
});
});
</script>
</html>这段代码是textarea自适应高度,我自己写的,但是,我一开始初始化的时候,弹出来的textarea真实的高度,和通过按钮获得textarea真实的高度不一样,而按钮获得的高度才是真正的高度,求解,这是怎么回事。javascriptjsjquery
<html xmlns="http://www.w3.org/1999/xhtml">
<!--<html>-->
<head>
<script type="text/javascript" src="jquery-1.9.1.js"></script>
</head>
<body>
<textarea style="overflow-y:auto; height: 50px;">sdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfdddddddddddddddddddddddddddd</textarea>
<button id="add">Add Textarea</button>
<button id="currentHeight">Current Height</button>
<button id="realHeight">Real Height</button>
</body>
<script>
$(function() {
$("textarea").each(function() {
$textarea = $(this);
var realHeight = $textarea.get(0).scrollHeight*2.7;
alert(realHeight);
if(realHeight > 100) {
$textarea.css("overflow-y", "auto");
$textarea.height(100);
}
});
/*$("textarea").keyup(function() {
if($textarea.height() > 100) {
$textarea.css("overflow-y", "auto");
$textarea.height(100);
}
});*/ $("#add").click(function() {
var html = "<textarea style='overflow-y:auto; height: 50px;'></textarea>";
$("body").append(html);
}); $("#currentHeight").click(function() {
alert($("textarea:first").height());
}); $("#realHeight").click(function() {
alert($("textarea:first").get(0).scrollHeight);
}); $(document).on("keyup", "textarea", function() {
var $textarea = $(this);
var realHeight = $textarea.get(0).scrollHeight;
var currentHeight = $textarea.height();
if(realHeight > 100) {
$textarea.css("overflow-y", "auto");
} else {
$textarea.css("overflow-y", "visible");
}
if(realHeight > 100) {
$textarea.height(100);
} else {
if(realHeight > 50) {
$textarea.height($textarea.get(0).scrollHeight);
} else {
$textarea.height(50);
}
}
//alert($textarea.height());
$textarea.css("overflow-y", "auto");
});
});
</script>
</html>这段代码是textarea自适应高度,我自己写的,但是,我一开始初始化的时候,弹出来的textarea真实的高度,和通过按钮获得textarea真实的高度不一样,而按钮获得的高度才是真正的高度,求解,这是怎么回事。javascriptjsjquery
我试是是一样的
$textarea.get(0).scrollHeight*2.7 ,不会是 *2.7 你说不一样吧
textarea的高度是占document的高度,scrollHeight的高度是textarea中内容的高度
我试是是一样的
$textarea.get(0).scrollHeight*2.7 ,不会是 *2.7 你说不一样吧
不是,发帖的时候忘记把2.7去掉了,你去掉就知道不行了,在里面输入很多个字符创,让textarea出滚动条,完了之后刷新一下,这个时候会alert出来一个值,会发现和textarea真实的高度不一样
textarea的高度是占document的高度,scrollHeight的高度是textarea中内容的高度
我知道,我是问,为什么第一次刷出来的时候高度和真实的高度不一样
我试是是一样的
$textarea.get(0).scrollHeight*2.7 ,不会是 *2.7 你说不一样吧
不是,发帖的时候忘记把2.7去掉了,你去掉就知道不行了,在里面输入很多个字符创,让textarea出滚动条,完了之后刷新一下,这个时候会alert出来一个值,会发现和textarea真实的高度不一样
你是在IE下测试吧,scrollHeight 会根据内容变化,IE下刷新后赋值
window.onload=function(){
alert($("textarea:first").get(0).scrollHeight);
},或者用 setTimeout 一下
我试是是一样的
$textarea.get(0).scrollHeight*2.7 ,不会是 *2.7 你说不一样吧
不是,发帖的时候忘记把2.7去掉了,你去掉就知道不行了,在里面输入很多个字符创,让textarea出滚动条,完了之后刷新一下,这个时候会alert出来一个值,会发现和textarea真实的高度不一样
你是在IE下测试吧,scrollHeight 会根据内容变化,IE下刷新后赋值
window.onload=function(){
alert($("textarea:first").get(0).scrollHeight);
},或者用 setTimeout 一下
你的意思是说,IE是在刷新完页面之后,再将textarea里的值赋给它吗?$(function() {});这里面写的代码不是在文档加载完之后才执行的吗?我好像知道点眉目了,麻烦你再给我说说,万分感激
IE是在刷新完页面之后,再将textarea里的值赋给它吗, 是的
JQ的 ready 事件 会比 onload快,它现在好像是改成用 document.readyState === "complete" 判断
IE是在刷新完页面之后,再将textarea里的值赋给它吗, 是的
JQ的 ready 事件 会比 onload快,它现在好像是改成用 document.readyState === "complete" 判断
用这个可以判断吗?这个是在所有内容全部完全加载完之后才开始执行这里面的代码吗?怎么用?我试了一下,好像不行呀
<html xmlns="http://www.w3.org/1999/xhtml">
<!--<html>-->
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
<textarea style="overflow-y:auto; height: 50px;">sdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfddddddddddddddddddddddddddddsdfsadfsdfsadfdddddddddddddddddddddddddddd</textarea>
<button id="add">Add Textarea</button>
<button id="currentHeight">Current Height</button>
<button id="realHeight">Real Height</button>
</body>
<script>
setTimeout(function() {
$("textarea").each(function() {
$textarea = $(this);
var realHeight = $textarea.get(0).scrollHeight ;
alert( realHeight )
if(realHeight > 100) {
$textarea.css("overflow-y", "auto");
$textarea.height(100);
}
});
/*$("textarea").keyup(function() {
if($textarea.height() > 100) {
$textarea.css("overflow-y", "auto");
$textarea.height(100);
}
});*/ $("#add").click(function() {
var html = "<textarea style='overflow-y:auto; height: 50px;'></textarea>";
$("body").append(html);
}); $("#currentHeight").click(function() {
alert($("textarea:first").height());
}); $("#realHeight").click(function() {
alert($("textarea:first").get(0).scrollHeight);
});
$(document).on("keyup", "textarea", function() {
var $textarea = $(this);
var realHeight = $textarea.get(0).scrollHeight;
var currentHeight = $textarea.height();
if(realHeight > 100) {
$textarea.css("overflow-y", "auto");
} else {
$textarea.css("overflow-y", "visible");
}
if(realHeight > 100) {
$textarea.height(100);
} else {
if(realHeight > 50) {
$textarea.height($textarea.get(0).scrollHeight);
} else {
$textarea.height(50);
}
}
//alert($textarea.height());
$textarea.css("overflow-y", "auto");
});
},100);
</script>
</html>
你TMD有病呀,自己回答问题回答偏了,还在这里骂人,你TMD上网上去搜一下,有写的和我一模一样的代码吗?甚至连标点符号都一样的封号什么的,全部一模一样的,去找,找的到再来这里说。你丫人品有问题吧,犯贱是吧,非逼着人骂你是吧?
这个不是根据时间来执行的吗?对了,我上网搜了下,说window.onload是在所有都加载彻彻底底完成后才执行的,那这么说的话应该来说textarea也是加载完成后,应该就能得到scrollHeight的了呀,但是为什么还是得不到呢?
可以了,我按照你说的,setTimeout,设置成0都可以哈哈,太感谢你了,谢谢,太谢谢了。
可以留个QQ吗?我私信你。多向你请教请教。
$("textarea").each(function () {
$textarea = $(this);
var realHeight = $textarea.get(0).scrollHeight// * 2.7;
alert(realHeight);
if (realHeight > 100) {
$textarea.css("overflow-y", "auto");
$textarea.height(100);
}
})
}, 100);
但是IE下刷新可以恢复功能是在页面元素加载完成之后再赋值的,他也是在 onlod 执行,所以说我们要在
onlod之后再后点