文字实时比对应该用什么思路?
如下图,目前我的方案是实时读取输入文字的长度,和原文所对应长度的切片做比对,如果相等就把原文的切片放入一个 class=red 的 text 标签里。
但是有个问题,这样要求所有的输入文字都必须正确,如果其中有一个文字不正确都不会变红(因为不相等),请赐教应该用什么思路?
如下图,目前我的方案是实时读取输入文字的长度,和原文所对应长度的切片做比对,如果相等就把原文的切片放入一个 class=red 的 text 标签里。
但是有个问题,这样要求所有的输入文字都必须正确,如果其中有一个文字不正确都不会变红(因为不相等),请赐教应该用什么思路?
小时候 pc 上有金山打字通
我还记得第一句话是 when you 开头的…
“`
<style>
.red{
color: red;
}
</style>
<div id=”textblock”></div>
<textarea id=”inputtext”></textarea>
<script>
let text = `但是有个问题,这样要求所有的输入文字都必须正确,如果其中有一个文字不正确都不会变红(因为不相等),请赐教应该用什么思路`
let inp = document.getElementById(‘inputtext’)
let textblock = document.getElementById(‘textblock’)
render()
inp.oninput = e => render()
function render(){
let inputarr = inp.value.split(”)
let arr = text.split(”).map((v,i) => v==inputarr[i]?`<span class=”red”>${v}</span>`:v)
textblock.innerHTML = arr.join(”)
}
</script>
“`
一直没有想用逐字比对的方案,就觉得一篇文章下来全部拆分文字和标点,运算要求比较高了。当然我即使逐字比对也写不出来你这么漂亮的代码哈,压根儿没学过 js 。map 真是个好东西。