我正在尝试计算文本区域每一行中的字符数。
我尝试修改此代码来计算音节http://jsfiddle.net/5Zwkq/19/ http://jsfiddle.net/5Zwkq/19/没有成功。任何帮助,将不胜感激。
function $CharCount($input) {
$("[name=set_" + $input + "]").keyup(function() {
var arrayOfLines = $("[name=set_" + $input + "]").val().match(/[^\r\n]+/g);
var tempArr = [];
var $content;
var char;
var $result;
for (var i = 0; i < arrayOfLines.length; i++) {
$content = arrayOfLines[i];
$result = $content.val().length;
tempArr.push($result);
}
$("[name=set_" + $input + "_content]").val(tempArr);
});
}
(function($) {
$CharCount("a");
})(jQuery);
<textarea rows="8" cols="3" class="alignright" name="set_a_syllable_count" readonly="readonly" /></textarea>
<textarea rows="8" cols="30" name="set_a"></textarea>
The .val()
导致这一行出现错误:
$result = $content.val().length;
删除它可以正确计算线长度(至少在计算区域)。
至于计数器文本区域错误,您只是错误地使用了 jQuery 选择器。重命名您的元素set_a_syllable_count
to set_a_content
.
还有一个问题 - 当文本区域为空时,它会引发错误,因为您正在检查空的正则表达式结果(null
,准确地说)。您只需防止在没有匹配行时对要执行的代码进行计数:
if (arrayOfLines !== null) { ... counting code ... }
固定代码:
function $CharCount($input) {
$("[name=set_" + $input + "]").keyup(function() {
var arrayOfLines = $("[name=set_" + $input + "]").val().match(/[^\r\n]+/g);
var tempArr = [];
var $content;
var char;
var $result;
if (arrayOfLines !== null) {
for (var i = 0; i < arrayOfLines.length; i++) {
$content = arrayOfLines[i];
$result = $content.length;
tempArr.push($result);
}
}
$("[name=set_" + $input + "_content]").val(tempArr);
});
}
(function($) {
$CharCount("a");
})(jQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<textarea rows="8" cols="3" class="alignright" name="set_a_content" readonly="readonly" /></textarea>
<textarea rows="8" cols="30" name="set_a"></textarea>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)