我是JavaScript的初学者。
有人可以帮助我吗?
当按下星形按钮时,如何突出显示具有背景的Textarea文本。单击“停止”时,光标应以高亮显示的背景停止。
当按下停止按钮时,它会显示单词count,lines count。
例如:
按下两个按钮之间的时间将为我们提供用户阅读所需的时间。 而且由于文本区域有多少个单词,可以计算出读取速度" 例如: 每分钟120个单词,就像每秒2个单词。 在10分钟内1200字。
这是我计算的方式。 让我们说一个书页通常有: 30行*每行8个字 这是一页240字 时间600页 这一共是144,000个单词 除以每分钟120字的阅读速度 那是1200分钟 每小时60分钟:20小时
以下链接与我的问题有关。但该文本已将文本突出显示为另一个文本区域。我想在同一个文本框中突出显示文本。
How to highlight text in TextArea
这是我的HTML代码:
<div id="startbtn">
<button id="start" onclick="startHighlight()">Start!</button>
</div>
<div id="stoptbtn">
<button id="stop" onclick="stopHighlight()">Stop!</button>
</div>
<div id="container">
<textarea id="inputText"></textarea>
</div>
答案 0 :(得分:4)
最新更新: 阅读模拟器现在基于用户inputSpeed读取每个单词并基于单词的长度来提供更真实的阅读流程。 https://jsfiddle.net/8Lwm6gh1/40/
js的Sourcode:
更新代码
$('#sim').each(function(){
this.contentEditable = true;
});
var go = $('#go');
var stop = $('#stop');
var wordCount = 0;
var wordCountBox = $('#wordCountBox');
var timepassed = $('#timepassed');
var textRead = $('#textRead');
var small = $('small');
go.on("click", function(e){
e.preventDefault();
startSim();
});
function startSim(){
var speed = $('#speed').val();
timeStart = $.now();
var sim = $('#sim').text();
var wordArray = sim.split(" ");
var simWrap = $('#sim');
var loopCount = 0;
var arrCount = wordArray.length;
var alreadyRead = [];
loopDat();
var i = loopCount;
function loopDat(){
var pos = loopCount;
var realSpeed = wordArray[pos].length;
realSpeed = (realSpeed * (speed / 5));
// realSpeed = Math.round((realSpeed * 0.1) * speed);
console.log('Reading speed of current word: '+realSpeed);
if(loopCount == pos){
setTimeout(function() {
if(pos < 0){
pos = 0;
}
alreadyRead.push(wordArray[pos]);
wordArray[pos] = '<b>'+wordArray[pos]+'</b>';
small.text('Current reading speed: '+realSpeed);
var words = wordArray.join(" ");
simWrap.html(words);
wordCount++;
if(pos == (arrCount - 1)){
triggerDone();
}
loopCount++;
if(loopCount < arrCount){
loopDat();
}
}, realSpeed);
}
}
// Function done
function triggerDone(){
wordCountBox.text('Words counted: '+wordCount);
var timeEnd = $.now();
var timeRes = timeEnd - timeStart;
timeRes = parseInt(timeRes);
timeRes = timeRes / 1000;
timepassed.text(timeRes+" seconds have passed");
alreadyRead = alreadyRead.join(" ");
textRead.text(alreadyRead);
var summary = $('#summary');
summary.show();
return;
}
stop.on("click", function(e){
e.preventDefault();
triggerDone();
});
}