Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 随机数生成器不能与parseInt一起工作?_Javascript_Html - Fatal编程技术网

Javascript 随机数生成器不能与parseInt一起工作?

Javascript 随机数生成器不能与parseInt一起工作?,javascript,html,Javascript,Html,我有一个函数,它在JS中做一个100到1之间的随机数,并将其添加到记分器中,但记分器不起作用。我甚至为它添加了parseInt,以便将它从字符串转换为实际数字int,但它给了我NaN。但是当我删除parseInt时,它会给我堆叠的数字。示例:50+100将变成50100而不是150。代码有问题吗?下面是HTML和JS <!DOCTYPE html> <html lang="en"> <head> <meta charset=

我有一个函数,它在JS中做一个100到1之间的随机数,并将其添加到记分器中,但记分器不起作用。我甚至为它添加了
parseInt
,以便将它从字符串转换为实际数字
int
,但它给了我
NaN
。但是当我删除
parseInt
时,它会给我堆叠的数字。示例:
50+100
将变成
50100
而不是
150
。代码有问题吗?下面是HTML和JS

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title></title>
    <link rel="stylesheet" href="pets.css">
</head>

<body>
    <div>
        <h1>Score Keeper</h1>
        <button onclick="randGen()">Random Numbers</button>
        <p id="paragraph"></p>
    </div>
    <h2 id="score"></h2>
    <script src="pets.js"></script>
</body>

</html>

这是一个简单的javaScript错误。您正在覆盖
const
const
的特点是该值不能被覆盖。将其更改为
let

另外,您会得到一个元素
document.getElementById(“score”)
,但随后会自动将其覆盖为0。还有,做
parseInt(scoreKeeper.innerText)??0
检查是否可以
parseInt
内部文本,而不是
innerText
是否存在。您应该先检查它是否存在,然后再检查它

let scoreKeeper = document.getElementById("score");

function randGen() {
  let p = document.getElementById("paragraph");
  const generatedNumber = Math.floor(Math.random() * 100) + 1;
  let currentNumber = scoreKeeper.innerText
    ? parseInt(scoreKeeper.innerText)
    : 0;

  if (generatedNumber > 0) {
    p.innerHTML = `Your number is: ${generatedNumber}`;
    currentNumber += generatedNumber;
    scoreKeeper.innerText = currentNumber;
  }
}
此外,在这种情况下,不需要返回。不向任何其他函数或位置返回值。您正在直接从函数修改
h2
p
内部文本

编辑

您可以通过执行if检查来检查值是否是您不想要的值,只需执行一个空的
返回
,并将
let scoreKeeper
移动到函数内部,从而使代码更具可读性并使用更少的全局变量。检查后,声明除生成的编号之外的所有其他变量,并返回仅创建变量并在满足条件时使用内存

function randGen() {
  const generatedNumber = Math.floor(Math.random() * 100) + 1;
  if (generatedNumber <= 0) return;
  let scoreKeeper = document.getElementById("score");
  let p = document.getElementById("paragraph");
  let currentNumber = scoreKeeper.innerText
    ? parseInt(scoreKeeper.innerText)
    : 0;
  p.innerHTML = `Your number is: ${generatedNumber}`;
  currentNumber += generatedNumber;
  scoreKeeper.innerText = currentNumber;
}
函数randGen(){
const generatedNumber=Math.floor(Math.random()*100)+1;

if(generatedNumber是一个简单的javaScript错误。您正在覆盖
const
const
的一个方面是该值不能被覆盖。将其更改为
let

此外,您还可以获得一个元素
document.getElementById(“score”)
,但随后会自动将其覆盖为0。此外,还可以执行
parseInt(scoreKeeper.innerText)??0
检查您是否可以
parseInt
内部文本,而不是
innerText
是否存在。您应该先检查它是否存在,然后再检查
parseInt

let scoreKeeper = document.getElementById("score");

function randGen() {
  let p = document.getElementById("paragraph");
  const generatedNumber = Math.floor(Math.random() * 100) + 1;
  let currentNumber = scoreKeeper.innerText
    ? parseInt(scoreKeeper.innerText)
    : 0;

  if (generatedNumber > 0) {
    p.innerHTML = `Your number is: ${generatedNumber}`;
    currentNumber += generatedNumber;
    scoreKeeper.innerText = currentNumber;
  }
}
此外,本例中的返回不需要。您不向任何其他函数或位置返回值。您直接从函数修改
h2
p
内部文本

编辑

您可以通过进行if检查来检查值是否是您不想要的值,只需执行一个空的
返回
,并将
let scoreKeeper
移动到函数内部,从而使代码更具可读性并使用更少的全局变量。检查后,声明除
generatedNumber
之外的所有其他变量,并仅返回到如果满足条件,则创建变量并使用内存

function randGen() {
  const generatedNumber = Math.floor(Math.random() * 100) + 1;
  if (generatedNumber <= 0) return;
  let scoreKeeper = document.getElementById("score");
  let p = document.getElementById("paragraph");
  let currentNumber = scoreKeeper.innerText
    ? parseInt(scoreKeeper.innerText)
    : 0;
  p.innerHTML = `Your number is: ${generatedNumber}`;
  currentNumber += generatedNumber;
  scoreKeeper.innerText = currentNumber;
}
函数randGen(){
const generatedNumber=Math.floor(Math.random()*100)+1;

if(generatedNumber
parseInt(“”)
NaN
NaN
0是
NaN
,因为
NaN
不是空的。使用
|
,因为
NaN
是假的。@FZs
scoreKeeper
const
,因此
scoreKeeper=0
只会抛出一个
无效的赋值
类型错误请在p之前检查控制台osting!您的代码无法验证,您收到了以下错误:{“消息”:“TypeError:对const'scoreKeeper'的分配无效”,我投票结束此问题,因为此代码包含一个简单错误。PO在发布
parseInt(“”)之前没有在其控制台中执行此简单检查
NaN
NaN
0是
NaN
,因为
NaN
不是空的。使用
|
,因为
NaN
是假的。@FZs
scoreKeeper
const
,因此
scoreKeeper=0
只会抛出一个
无效的赋值
类型错误请在p之前检查控制台osting!您的代码无法验证,您收到了以下错误:{“消息”:“TypeError:对const'scoreKeeper'的分配无效”,我投票关闭此问题,因为此代码包含一个简单错误。PO在发布之前没有在其控制台中执行此简单检查