Javascript 将3个值在一定的百分比范围内进行比较
我试图做到这一点:Javascript 将3个值在一定的百分比范围内进行比较,javascript,comparison,Javascript,Comparison,我试图做到这一点: 3个输入框 获取输入值并与特定百分比进行比较 如果值之间的偏差在3%以内。输出=某物 else输出其他东西 如果您有任何帮助,我们将不胜感激。这是一个代码示例,您可以从中派生逻辑 检查 document.getElementById(“checkValues”).onclick=function(){ var value1=parseFloat(document.getElementById(“value1”).value); var value2=parseFloat(
如果您有任何帮助,我们将不胜感激。这是一个代码示例,您可以从中派生逻辑
检查
document.getElementById(“checkValues”).onclick=function(){
var value1=parseFloat(document.getElementById(“value1”).value);
var value2=parseFloat(document.getElementById(“value2”).value);
var value3=parseFloat(document.getElementById(“value3”).value);
var maxValue=parseFloat(Math.max(Math.max(value1,value2,value3));
如果(1-(value1/maxValue)只需对值排序并计算:
函数计算百分比(a、b、c){
var值=[a、b、c];
sort(函数(a,b){返回a-b;});
返回(值[2]-值[0])/值[0];
}
写(计算百分比(100101102)+'
');
document.write(calculatePercent(80,90,100)+'
”;
首先创建基本级别如下所示的输入:
<input type="text" width="3em">
这将在屏幕上显示所有的输入标记。现在,我们可以迭代这些标记,并获得我们需要的数据,我将把这些数据放入一个数组中
注意:每个输入标记都有一个名为value的属性,该属性存储放置在输入中的字符串,该字符串可以通过在前面放置一个+
来更改为数字
var numbers = [],
inputs = document.getElementsByTagName("input");
for(var i = 0; i < inputs.length; ++i)
{
var number = +inputs[i].value;
// Makes sure that a number is there.
if(!isNaN(number))
numbers.push(number);
}
使用计算功能,我们现在可以专注于显示
现在,我们需要一个按钮来调用一个函数,并为我们创造奇迹!这也可以通过输入标签来实现,但要改变它的类型
<input type="submit" value="calculate" onclick="calculate()">
这些标记有一个名为innerHTML
的属性,在该属性中,我们可以通过编辑来完成,嗯…,更改内部HTML
var p = document.getElementById("display");
p.innerHTML = "Hello World!";
现在,我们可以将以上所有内容结合起来,得到:
//数字的公差应在以下范围内。
var公差=3,
//预期输入的数量。
金额=3;
函数计算(){
变量数=[],
输入=document.getElementsByTagName(“输入”);
//获取所有数字。
对于(变量i=0;i inrange=(100*pdiff)我如何扩展到文档。写(“”)这3个数字之间的百分比差异?这有帮助吗?抱歉,可能有一个错误。我试图从手机lol中执行此操作。我不喜欢使用文档。写(“”
,因为它在当前HTML页面上写入:)看起来效果不错,我只需要截断或切掉输出,这样值就不会太长…嗯…我更新了它,以更好地显示结果。现在,它当前的设置方式将显示所有不在公差范围内的结果。要解决这个问题,请删除for循环中的&&inrange
,然后替换inrange=(100*pdiff)要舍入,看。这可能有点棘手。我在答案中添加了一个我通常使用的函数。
var inrange = true,
tolerance = 3/*In percentage!*/;
for(var i = 0; i < numbers.length && inrange; ++i)
for(var j = i + 1; j < numbers.length && inrange; ++j)
{
var diff = (numbers[i] - numbers[j]),
// Need to make sure diff is positive. Could use Math.abs...
pdiff = 2 * (diff < 0 ? -1*diff : diff)
/ (numbers[i] + numbers[j]);
// If false will cause the loops to stop.
inrange = (100 * pdiff) <= tolerance;
}
<input type="submit" value="calculate" onclick="calculate()">
<p id="display"></p>
document.getElementById("display");
var p = document.getElementById("display");
p.innerHTML = "Hello World!";