Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算在没有jQuery的HTML文本区域中显示的行数(不是换行)?_Javascript_Html_Textarea_Line Count - Fatal编程技术网

Javascript 计算在没有jQuery的HTML文本区域中显示的行数(不是换行)?

Javascript 计算在没有jQuery的HTML文本区域中显示的行数(不是换行)?,javascript,html,textarea,line-count,Javascript,Html,Textarea,Line Count,可能重复: 我有一个textarea,我在里面写了7行,只有2个新行字符,就像下面这样,想象一下下面的代码框是一个textarea,只按了两次回车键 A text box, text field or text entry box is a kind of widget used when building a graphical user interface (GUI). A text box purpose is to allow the user to input text inf

可能重复:

我有一个
textarea
,我在里面写了
7行
,只有
2个新行字符
,就像下面这样,想象一下下面的代码框是一个
textarea
,只按了两次回车键

 A text box, text field or text entry box is a kind of widget used when building
 a graphical user interface (GUI). A text box purpose is to allow the user to
 input text information to be used by the program.
 User-interface guidelines recommend a single-line text box when only one line of
 input is required, and a multi-line text box only if more than one line of input
 may be required.
 Non-editable text boxes can serve the purpose of simply displaying text.
如果现在
textarea line count
n
,则在写入更多行之后。如何计算
n
的值

回答问题之前请先弄清楚。我不想计算我的文本中有多少像这样的
新行字符

我想像计算一篇文章中的行数一样计算行数


请不要jQuery…

您可以试试这个。到目前为止我还没有测试它,但我记得它应该可以正常工作

var lineHeight = document.getElementById("yourTextarea").style.lineHeight;
var scrollHeight = document.getElementById("yourTextarea").scrollHeight;
document.getElementById("yourTextarea").style.height = scrollHeight; // this is just for showing purposes
var numLines = Math.floor( scrollHeight / lineHeight );
这应该是我认为最简单的方法

编辑

答案很简单:D

首先,让舒尔为textarea设置一个值,用于cols

现在看看这个=

<textarea id="mytext" cols="10" rows="12">
</textarea>
<input type="button" value="Count Rows" onclick="countRows();"/>
<script type="text/javascript">
function countRows() {
    var stringLength = document.getElementById("mytext").value.length;
    var count = Math.ceil( stringLength / document.getElementById("mytext").cols ); 
    // just devide the absolute string length by the amount of horizontal place and ceil it
    alert( count );
}
</script>

函数countRows(){
var stringLength=document.getElementById(“mytext”).value.length;
var count=Math.ceil(stringLength/document.getElementById(“mytext”).cols);
//只需将绝对字符串长度除以水平位置的数量,然后将其消除即可
警报(计数);
}
现在,这应该也能正常工作

更新

在获取长度之前,您还可以确保删除所有“新行”元素,或者仅删除字符串中的最后一个字符(如果它是“新行”)。这样就不会计算不需要的额外行

还请确保不要设置文本框的“宽度”!!这将导致行中的文本比“cols”的值更进一步。这样,“count”值将给出行数,如果最大行宽为cols值。因此,使用cols属性设置文本框宽度的唯一方法

更新2

我认为,如果您想要一种无缺陷的方式,那么使用PHP或jQuery是没有出路的

另外,第二种解决方案只是一种快速而肮脏的方式。您必须编写一个逻辑代码,检查每个单词是否比awayable width长,还必须检查每一行是否有由于空间不足而放在下一行的单词

这需要一些逻辑技巧,由于不活动,我现在不写代码

如果你想让我发布一个完整的Javascript、PHP或jQuery解决方案,请让我知道。
(我看不出有任何理由不使用jQuery来实现这一点)

您尝试过什么?(StackOverflow的目的是帮助您解决问题,而不是为您完成任务。您至少应该尝试自己解决问题。)@jdigital I在google中搜索多个关键字。。。但是没有办法从哪里开始。。。关于代码,对我来说什么都不管用……这不是你想要的答案吗?@jdigital这似乎不是一个微不足道的问题。没有任何想法,很难开始。@BlackCobra尝试搜索有关自动调整文本区域高度的文章。如果您可以计算所需的大小,则可以使用Ace的解决方案。my
empty textarea
包含12行。。。所以当我写7行时,它会返回12行…我找到了另一种方法,我现在正在测试它抱歉地通知您代码中有一个bug。。。你的代码不适用于段落。。。在从结果框中单击“计数行”之前,请不要忘记单击“运行”按钮(左下角)。查看我更新的代码,我刚刚删除了-1,但我认为我的代码没有计算空格,我会很快更新。请不要在文章末尾添加签名和其他不必要的注释。