求助:移除textarea搜索字符后无法重新显示处理后的文本
问题排查:移除字符后文本无法正确显示
核心错误
你在处理移除字符的逻辑后,多写了一行覆盖结果的代码:
$('#removeChar').val(removedCharText); // 下面这行直接覆盖了上面的正确结果 $('#removeChar').val(searchChar);
这行多余的代码会把#removeChar的内容设置为选中的搜索字符,而非处理后的文本,直接导致之前的移除操作结果被覆盖。
额外优化点
另外,你统计字符出现次数时用了gi修饰符(大小写不敏感),但replaceAll是大小写敏感的,这会导致统计的次数和实际移除的字符数量不匹配。建议改用正则表达式的replace方法,保持逻辑一致性:
var removedCharText = text.replace(new RegExp(searchChar, 'gi'), '');
修正后的完整JavaScript代码
$(document).ready(function() { //On click of button, generate text in text area $('#generateText').click(function(event) { $('#textArea').val("Tom Cruise once ate a 4000ft long subway sandwichs and then he played Nathan Drake!") }) $('#submit').click(function(event) { event.preventDefault(); //Number of Words var text = $('#textArea').val(); var numWords = text.trim().split(/\s+/).length; $('#numWords').val(numWords); //Occurance Number var searchChar = $('#searchChar').val(); var numOccurance = (text.match(new RegExp(searchChar, "gi")) || []).length; $('#numOccurance').val(numOccurance); //Caps Text var uppercaseText = text.toUpperCase(); $('#capsText').val(uppercaseText); //Removes Search Character(修正后+优化大小写匹配) var removedCharText = text.replace(new RegExp(searchChar, 'gi'), ''); $('#removeChar').val(removedCharText); // Date var numDays = $('#numDays').val(); var currentDate = new Date; currentDate.setDate(currentDate.getDate() + parseInt(numDays)); var formatDate = (currentDate.getMonth() + 1) + '/' + currentDate.getDate() + '/' + currentDate.getFullYear(); $('#modifiedDate').val(formatDate); }) })
其他小优化
- 重复的
$('#numOccurance').val(numOccurance);已删除,避免冗余 generateText点击事件里的无用var text变量已移除
内容的提问来源于stack exchange,提问作者Trevor
相关产品推荐
相关产品推荐

