【发布时间】:2020-06-03 16:45:22
【问题描述】:
我正在尝试制作一个概率查找器来获取一些随机数并从随机数数组中找到一个数字的概率。我有以下代码:
/*********************Select Random Number**********************/
//Number of cases
var nOC = document.getElementById("noc").value;
function rollDice() {
//Number of trials
let nOT = document.getElementById("not").value;
//Empty Array to be filled
let array = [];
//Loop which pushes random numbers in the empty array
for (let i = 1; i <= nOT; i++) {
array.push(Math.ceil(Math.random() * nOC));
}
//Display results in a paragraph
document.getElementById("para").innerHTML = "Your random numbers are " + array;
}
/*********************Get Probability**************************/
function getProbabilityOf() {
//Probability of...
let oP = document.getElementById("op").value;
//Check if the number is out of range. If no, then find the probability of given number
if (oP >= noC) {
alert("This number is out of the range of possible outcomes that you have selected in step 1");
} else {
//Some code here
}
}
<!---------------------------Intro------------------------------>
<h1>Probability Finder</h1>
<hr/>
<p>With our probability finder, you can easily choose the number of possible cases and select the number of times you want to select a random case each time from the total cases and finally find the empirical probability of and case you want from the selected
total number of cases.</p>
<!---------------------------Step 1------------------------------>
<h3><span class="bold">Step 1 :</span>Select total number of cases:</h3>
<select id="noc">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
<!---------------------------Step 2---------------------------->
<h3><span class="bold">Step 2 :</span>Select total number of trials</h3>
<select id="not">
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
<option value="60">60</option>
<option value="70">70</option>
<option value="80">80</option>
<option value="90">90</option>
<option value="100">100</option>
</select>
<!----------------------------Step 3----------------------------->
<h3><span class="bold">Step 3 :</span>Get random numbers by experiment</h3>
<button onclick="rollDice()">Get random numbers</button>
<p id="para"></p>
<!----------------------------Step 4----------------------------->
<h3><span class="bold">Step 4 :</span>Get probability of a particular number</h3>
<select id="op" onchange="getProbabilityOf()">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>
在声明第二个函数之前,nOC 被声明为函数 rollDice 的本地函数。但是在我声明下一个函数之后,我需要访问它以完成第 4 步(如代码 sn-p 中所述)。所以我从函数中删除了变量nOC并全局声明它(如代码sn-p所示)。 问题是在将变量声明为全局变量后,没有一个函数能够访问它。 为了解决这个问题,我多次重新检查语法,但没有发现任何问题(据我所知)。我尝试将变量的类型从 let 更改为 var 和 const 但仍然没有解决问题。 可能是什么问题呢?作为编码领域的新手,我知道小错误是我犯的,但对我来说知道自己的错误并改正它们是非常重要的。
【问题讨论】:
-
input.value始终是一个字符串。您正在使用字符串"3",而不是数字3。您需要将值转换为数字let nOT = +document.getElementById("not").value。请注意,Typescript 会告诉您(let nOT:number = input.value会告诉您“无法将字符串分配给数字”) -
var nOC = document.getElementById("noc").value;但使用 asif(oP >= noC)'O' 有错别字 -
该值将在页面加载时设置。更改它不会更新
nOC,因为它不会自动更新。
标签: javascript html global-variables local-variables