当用户在文本框中写入内容时,更改 div 中某些单词的背景颜色
Change background color of some words in div as user writes something in textbox
如果这个问题被问了数百万次,我很抱歉,但我真的很努力地为我的问题找到解决方案。
好吧,我正在使用 jquery 和 php 编写一个打字速度脚本。该脚本可以很好地计算 wpm nwpm 等,但问题是当用户键入时没有指示器表明用户输入的是哪个单词(不是 char,WORD,每个由 space 分隔)。
让我说得更清楚。
我有一个 div,其中包含给定的段落
<div id="paragraph">Some text to type. It will going to be a long set of words</div>
和一个要输入的文本区域。
我想要的只是突出显示用户正在输入的单词。不是炭。就像在上面的段落中,当用户开始输入第一个单词 "Some" 时,必须突出显示相同的单词位置,如果用户按下 space 来写第二个值,则应该为该单词提供确切的样式。
因此,无论何时用户点击 space,突出显示样式都应应用于该词。如果用户点击 Som,那么突出显示的词应该是 "text",这是在那个时候输入的。
document.getElementById('paragraph').length 没有给出解决方案。
谢谢
抱歉我的英语不好,有些事情让我感到困惑..
希望这会有所帮助。它使用简单的字符串拆分行为来突出显示应键入的当前单词。如果您必须支持双倍间距,您可以更改为正则表达式,但这应该是微不足道的。
HTML
<div id="paragraph">Some text to type. It will going to be a long set of words</div>
<textarea id="typingarea" cols="50"></textarea>
Javascript
var paragraphArray = $("#paragraph").text().split(' ');
updateTypewriter();
$("#typingarea").on("keyup", function(){
updateTypewriter();
});
function updateTypewriter(){
var typingAreaArray = $("#typingarea").val().split(' ');
var newTypewriterHtml = "";
var typingAreaWordIndex = 0;
paragraphArray.forEach(function(word) {
if (newTypewriterHtml != ""){
newTypewriterHtml += " ";
}
if (typingAreaWordIndex+1 == typingAreaArray.length){
newTypewriterHtml += "<span style='background-color: red; font-weight: bold;'>" + word + "</span>";
} else {
newTypewriterHtml += word;
}
typingAreaWordIndex++;
});
$("#paragraph").html(newTypewriterHtml);
}
如果这个问题被问了数百万次,我很抱歉,但我真的很努力地为我的问题找到解决方案。
好吧,我正在使用 jquery 和 php 编写一个打字速度脚本。该脚本可以很好地计算 wpm nwpm 等,但问题是当用户键入时没有指示器表明用户输入的是哪个单词(不是 char,WORD,每个由 space 分隔)。
让我说得更清楚。
我有一个 div,其中包含给定的段落
<div id="paragraph">Some text to type. It will going to be a long set of words</div>
和一个要输入的文本区域。 我想要的只是突出显示用户正在输入的单词。不是炭。就像在上面的段落中,当用户开始输入第一个单词 "Some" 时,必须突出显示相同的单词位置,如果用户按下 space 来写第二个值,则应该为该单词提供确切的样式。
因此,无论何时用户点击 space,突出显示样式都应应用于该词。如果用户点击 Som,那么突出显示的词应该是 "text",这是在那个时候输入的。 document.getElementById('paragraph').length 没有给出解决方案。
谢谢 抱歉我的英语不好,有些事情让我感到困惑..
希望这会有所帮助。它使用简单的字符串拆分行为来突出显示应键入的当前单词。如果您必须支持双倍间距,您可以更改为正则表达式,但这应该是微不足道的。
HTML
<div id="paragraph">Some text to type. It will going to be a long set of words</div>
<textarea id="typingarea" cols="50"></textarea>
Javascript
var paragraphArray = $("#paragraph").text().split(' ');
updateTypewriter();
$("#typingarea").on("keyup", function(){
updateTypewriter();
});
function updateTypewriter(){
var typingAreaArray = $("#typingarea").val().split(' ');
var newTypewriterHtml = "";
var typingAreaWordIndex = 0;
paragraphArray.forEach(function(word) {
if (newTypewriterHtml != ""){
newTypewriterHtml += " ";
}
if (typingAreaWordIndex+1 == typingAreaArray.length){
newTypewriterHtml += "<span style='background-color: red; font-weight: bold;'>" + word + "</span>";
} else {
newTypewriterHtml += word;
}
typingAreaWordIndex++;
});
$("#paragraph").html(newTypewriterHtml);
}