javascript - JavaScript中的除法给出未定义的错误
问题描述
我试图计算用户开始输入到结束之间的时间。Date.now();
所以我用这个函数命名了两个常量。每当我运行程序时,它总是给出错误:ReferenceError: start is not defined at HTMLInputElement.element.onkeyup (/main.js:86:16)
代码如下:
Javascript:
var input = document.getElementById("boch"); input.addEventListener("keyup", function (event) { if (event.keyCode === 13) { event.preventDefault(); document.getElementById("bocho").click(); } }); var element = document.querySelector("#boch"); element.onkeyup = function () { 变量值 = 元素值; if (value.includes("m")) { 让开始 = Date.now(); } if (value.includes("man")) { document.getElementById('word-1').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-1').style.backgroundColor = "red"; } if (value.includes("man become")) { document.getElementById('word-2').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-2').style.backgroundColor = "red"; } if (value.includes("man become as")) { document.getElementById('word-3').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-3').style.backgroundColor = "red"; } if (value.includes("man become as and")) { document.getElementById('word-4').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-4').style.backgroundColor = "red"; } if (value.includes("man become as and through")) { document.getElementById('word-5').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-5').style.backgroundColor = "red"; } if (value.includes("man become as and through find")) { document.getElementById('word-6').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-6').style.backgroundColor = "red"; } if (value.includes("man become as and through find would")) { document.getElementById('word-7').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-7').style.backgroundColor = "red"; } if (value.includes("man become as and through find will here")) { document.getElementById('word-8').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-8').style.backgroundColor = "red"; } if (value.includes("man become as and through find will here and")) { document.getElementById('word-9').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-9').style.backgroundColor = "red"; } if (value.includes("man 通过 find will here 和 before")) { document.getElementById('word-10').style.backgroundColor = 'green'; } 别的 { document.getElementById('word-10').style.backgroundColor = "red"; } if (value.includes("man 通过 find will here 和 before")) { 让结束 = Date.now(); } 让millis =开始/结束; console.log(`经过的秒数 = ${Math.floor(millis / 1000)}`); }
html:
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>repl.it</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<h1>
<span id="word-1">man</span> <span id="word-2">become</span> <span id="word-3">as</span>
<span id="word-4">and</span> <span id="word-5">through</span> <span id="word-6">find</span> <span id="word-7">would</span> <span id="word-8">here</span> <span id="word-9">and</span> <span id="word-10">before</span>
</h1>
<input type="text" id="boch" autocomplete="off">
</div>
<div id="typing-area">
<button id="bocho" onclick="document.getElementById('boch').value = ''">Enter</button>
</html>
<script src="main.js"></script>
解决方案
您声明变量“start”的位置与使用时不同。这意味着
let millis = start/end;
看不到开始。
您需要将 let 更改为 var。这样范围就不会以同样的方式受到限制
推荐阅读
- html - 追加多个div条件明智的jQuery
- algorithm - 检查两个数字在给定基数中是否相互镜像(符号相反)的快速方法
- sql - 与您的 MySQL 服务器版本相对应的 SQL 语法手册中的错误
- java - Intellij Idea Maven 存储库都在“更新”字段中显示“错误”
- redirect - 发布和重定向到另一个页面不保存数据
- google-apps-script - 使用 Apps 脚本替换带有 \r 或 \n 的内容时出现问题
- docker - 当我使用绑定挂载时 Docker 容器退出(简单的 php/apache 设置)
- javascript - 如何在同一函数中使用异步数据两次更新状态
- react-native - react native 中钩子的正确语法
- java - restTemplate.postForObject 不发送对象的所有成员变量