我是一名学生,致力于开发一个计算滑雪者受伤机会的应用程序。该应用程序要求用户输入自己的变量,如能力和设备。我无法为每个不同的单选按钮分配和保存值。例如,我可以点击“帽子”按钮,它会将百分比值更改为“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;
}
答案 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()
)。每个人都可以将提供的值存储到单独的字段中(可能是gearRisk
和abilityRisk
)并调用另一个函数(可能是UpdateUI()
)来检查这些字段并决定如何更新UI。 / p>