//evt代表的是事件对象 document.onkeyup = function (evt) { var e = evt || window.event; var codeVal = e.keyCode; // e.keyCode获得键盘码 if(codeVal >= 65 && codeVal <= 90){ count++; } // 根据Unicode编码找到对应字符 var char = keyVal[codeVal]; if(char){ var index = letters.search(eval("https://www.jb51.net/" + char + "/gi")); // var index = letters.search(char); if(index != -1) { game.removeChild(letterEles[index]); var exp = eval("https://www.jb51.net/" + char + "/gi"); letters = letters.replace(exp, ""); // letters = letters.replace(char,""); tit.children[0].firstElementChild.innerHTML = ++score; tit.children[1].firstElementChild.innerHTML = (score/count*100).toFixed(2) + "%"; } } }
以上实现键盘打字,字母消失的代码的主要过程是:
通过e.keyCode获得键盘码,通过键盘码找到对应字符,然后用正则表达式的eval方法对找到的字符进行计算,用search方法匹配到当前目标元素节点距离字符串开始位置的偏移位置.把它从父节点里删掉,还要将letters里的目标元素节点删掉,即用空格代替.每打对一字得一分,分数/键盘按下次数即为正确率.