如何保存和平均与单选按钮关联的两个值?

时间:2015-02-19 21:49:01

标签: javascript html

我是一名学生,致力于开发一个计算滑雪者受伤机会的应用程序。该应用程序要求用户输入自己的变量,如能力和设备。我无法为每个不同的单选按钮分配和保存值。例如,我可以点击“帽子”按钮,它会将百分比值更改为“67”,但是当我点击另一个单选按钮时,此值不会产生任何影响。你有没有机会帮助创建能够平均两个单选按钮值的代码?

HTML:

<h1>Personal Information</h1>

<h2>Gear</h2>
<input type="radio" onclick="changeText(.7)" name="group2"/> Helmet
<input type="radio" onClick="changeText(.67)" name="group2"/> Hat

<h2>Ability</h2>
<input type="radio" onclick="changeText(.7)" name="group2"/> Beginner
<input type="radio" onclick="changeText(.7)" name="group2"/> Intermediate
<input type="radio" onclick="changeText(.7)" name="group2"/> Advanced

<h2>Risk</h2>    
Precent % <input type="text" id="count" value="1%"/>

使用Javascript:

function changeText(value) {
     document.getElementById('count').value = 1 * value;   
}

http://jsfiddle.net/J7m7m/339/

1 个答案:

答案 0 :(得分:0)

我将您的javascript更改为以下内容。它可能无法完全按照您的喜好工作。目前,它继续平均所有传递的值changeText

例如,如果你选择“帽子”并继续改变你的想法是否是中级的初学者,平均值会继续接近0.7,因为它开始平均{0.67, 0.7},但随后开始平均{0.67, 0.7, 0.7, 0.7, ... }您点击的次数越多。

var aggregate = 0;
var times = 0;

function changeText(value) {
    aggregate += value;
    times++;

    if (times == 0)
    {
        document.getElementById('count').value = 1 * value;
    }
    else
    {
        document.getElementById('count').value = aggregate / times;   
    }
}

基本要点是你需要跟踪传递给你的内容。

你可以改变它,例如,只是存储前一个值而不是累积一个聚合,并且总是除以2得到最后两个值的平均值。

var previousValue = null;

function changeText(value) {
    if (!previousValue)
        document.getElementById('count').value = 1 * value;
    else
        document.getElementById('count').value = (previousValue + value) / 2;   

    previousValue = value;
}

根据您的需要,您可能需要编写两个函数,一个用于报告与级别关联的值以及一个与设备关联的值(可以称之为ReportGearRisk()ReportAbilityRisk())。每个人都可以将提供的值存储到单独的字段中(可能是gearRiskabilityRisk)并调用另一个函数(可能是UpdateUI())来检查这些字段并决定如何更新UI。 / p>