我的意思是: 例如:在<textarea>中有如下的信息: a b c d e f 但由于有了滚动条,界面只显示了: c d e f 现在我的目的就是得到 c d e f 这些数据。
<textarea id=demo rows=4> a b c d e f </textarea> <input type=button value=getV onclick=getV(demo)> <script> function getV(obj){ var lines=(obj.rows)?obj.rows:2; var fLine=Math.round(obj.scrollTop*lines/obj.offsetHeight) var arr=obj.value.split("\r\n"),ret=""; for(i=0;i<lines;i++)ret+=arr[fLine+i]+"\r\n" alert(ret) } </script>
没试过.. 不知道能否得到.. 要不根据font-size和clientHeigth取适当的行.
to qiushuiwuhen(秋水无恨): 你的方法是可以得到,但有几个问题? 1、由于<textarea>有一定的宽度,如果用户输入的信息过长,系统会自动换行,对于你的程序(obj.value.split("\r\n")),所得的结果就是错误的。 2、我的<textarea>用的是绝对坐标,没有指定rows属性,我怎样得到lines的值呢(lines=(obj.rows)?obj.rows:2)?
例如:在<textarea>中有如下的信息:
a
b
c
d
e
f
但由于有了滚动条,界面只显示了:
c
d
e
f
现在我的目的就是得到
c
d
e
f
这些数据。
a
b
c
d
e
f
</textarea>
<input type=button value=getV onclick=getV(demo)>
<script>
function getV(obj){
var lines=(obj.rows)?obj.rows:2;
var fLine=Math.round(obj.scrollTop*lines/obj.offsetHeight)
var arr=obj.value.split("\r\n"),ret="";
for(i=0;i<lines;i++)ret+=arr[fLine+i]+"\r\n"
alert(ret)
}
</script>
不知道能否得到..
要不根据font-size和clientHeigth取适当的行.
你的方法是可以得到,但有几个问题?
1、由于<textarea>有一定的宽度,如果用户输入的信息过长,系统会自动换行,对于你的程序(obj.value.split("\r\n")),所得的结果就是错误的。
2、我的<textarea>用的是绝对坐标,没有指定rows属性,我怎样得到lines的值呢(lines=(obj.rows)?obj.rows:2)?
2。var lines=(obj.rows)?obj.rows:2;
就是判断是否指定了rows属性,没有就默认为2
我不认为讨论这个有很大的意义:你自己拉一下滚动条,如果出现半个字符的话应该怎样算呢?
在ie中<textarea>也没有滚动条,滚动是通过向上向下方向键来达到的。用户要打印他所关心的内容,也就是可见部分的内容。用ie的打印功能直接打印。都打印的是开头一部分的内容。如果想全部打印出来那要怎么实现呢?由于在<textarea>的周围都是有<hr>组成的一定表格(由于一定的原因用<hr>组成表格,而且都用的是绝对坐标。打印的<textarea>的内容长了,我怎样随机相应改变各个<hr>以及下面各个控件的属性(top,height)呢?