如何使用单选按钮更改变量值
How to use radio buttons to change variable values
我是编码新手,正在尝试使用HTML5和JavaScript来创建具有用户输入的教育模拟。
为了将输入限制为合理的值,我想使用3个单选按钮在空气,水和油之间进行选择。
这些中的每一个都需要与粘度值和密度值相关联,稍后在模拟中使用。到目前为止,我只看到了如何使用单选按钮的"value"属性作为其输出,但是看到我需要将两个输出绑定到每个按钮,我如何实现这一目标(输出被发送到两个跨度,其内部HTML由脚本稍后的getElementById().innerHTML
获取。
<div class="radio">
<p><b>Fluid Type</b></p>
<form id="fluidForm">
<p>
<label>Air: <input type="radio" name="fluid" value="Air" /></label>
<label>Water: <input type="radio" name="fluid" value="Water" /></label>
<label>Oil: <input type="radio" name="fluid" value="Oil" /></label>
</p>
</form>
<span>Fluid viscosity:</span>
<span id="param3">4500</span> Pa s
<br/>
<span>Fluid density:</span>
<span id="param4">4500</span> kg/m^3 <!-- SI -->
<script>
document.getElementByName("fluid").addEventListener("change", radioChange);
document.getElementByNAme("fluid").addEventListener("click", radioChange);
function radioChange (){
if (document.getElementByName("fluid").value = "Air"){
document.getElementById("param3").innerHTML = 50;
document.getElementById("param4").innerHTML = 100;
};
if (document.getElementByName("fluid").value = "Water"){
document.getElementById("param3").innerHTML = 60;
document.getElementById("param4").innerHTML = 110;
};
if (document.getElementByName("fluid").value = "Oil"){
document.getElementById("param3").innerHTML = 70;
document.getElementById("param4").innerHTML = 120;
};
};
//and further down variables are called:
var viscosity = document.getElementById("param3").innerHTML;
var fdensity = document.getElementById("param4").innerHTML;
</script>
这似乎行不通,在我看来(一个完全的新手)无论如何都是一种直率的做事方式。
(跨度内的值已经只是占位符,让我知道它是否正确更改)。
提前非常感谢任何帮助!
您的代码将在一些更改后工作:
-
getElementByName()
函数不存在,它应该是getElementsByName()
的(请注意Elements
中的s
)。 -
您应该遍历
getElementByName()
返回的节点列表,并将事件附加到每个节点:var fluids = document.getElementsByName("fluid"); for(var i=0;i<fluids.length;i++){ fluids [i].addEventListener("change", radioChange); fluids [i].addEventListener("click", radioChange); }
-
您必须在全局范围内定义变量,并在方法
radioChange()
用新值覆盖它们。 -
当你想比较时,你必须使用
===
==
,而不是应该用于情感目的=
。
希望这有帮助,请查看下面的工作示例。
var viscosity = document.getElementById("param3").innerHTML;
var fdensity = document.getElementById("param4").innerHTML;
// Attaching events HERE
var fluids = document.getElementsByName("fluid");
for(var i=0;i<fluids.length;i++){
fluids[i].addEventListener("change", radioChange);
}
function radioChange (){
var current_value = this.value;
var param3 = document.getElementById("param3");
var param4 = document.getElementById("param4");
if (current_value == "Air"){
param3.innerHTML = 50;
param4.innerHTML = 100;
};
if (current_value == "Water"){
param3.innerHTML = 60;
param4.innerHTML = 110;
};
if (current_value == "Oil"){
param3.innerHTML = 70;
param4.innerHTML = 120;
};
viscosity = param3.innerHTML;
fdensity = param4.innerHTML;
};
<div class="radio">
<p>
<b>Fluid Type</b>
</p>
<form id="fluidForm">
<p>
<label>Air: <input type="radio" name="fluid" value="Air" /></label>
<label>Water: <input type="radio" name="fluid" value="Water" /></label>
<label>Oil: <input type="radio" name="fluid" value="Oil" /></label>
</p>
</form>
<span>Fluid viscosity:</span>
<span id="param3">4500</span> Pa s
<br/>
<span>Fluid density:</span>
<span id="param4">4500</span> kg/m^3 <!-- SI -->
</div>
不尝试开关盒?开关( 流体) { 案例空气: 参数3 = .. 参数4 = .. 破; 案例 N: 代码块 破; 违约: 默认代码块}
如果你不反对使用jQuery,这就是我的做法:
https://jsfiddle.net/danhaswings/n4hg901u/
我会给我的输入 ID,然后使用这个 jQuery:
$(document).ready(function() {
function radioChange(id) {
switch (id) {
case 'air':
alert('air');
break;
case 'water':
alert('water');
break;
case 'oil':
alert('oil');
break;
default:
alert('undefined id');
break;
}
};
$radios = $('.radio input');
$radios.on('change', function() {
var $this = $(this);
radioChange($this.prop('id'));
});
});
这很容易在没有jQuery的情况下做到,正如人们上面已经说过的那样。我只是认为这对您使用jQuery查看它的外观很有用。
- JavaScript:单击时相对于父级增加变量值
- 如何通过ajax增加/减少PHP变量值并重新加载函数
- 如何从特定页面中提取php变量值
- JavaScript模数未正确递增变量值
- 替换另一个变量对象中的变量值
- mandrill合并标记不接受变量值
- 将变量值从一个javascript传递到另一个javascript
- 改变窗口宽度的变量值
- 使用angularjs动态改变变量值
- Javascript:根据隐藏变量值改变按钮文本
- 如何根据javascript变量值改变元素的类
- Safari扩展-改变预定义的Javascript变量值
- 变量值在第二次while循环后不会改变
- 观察一个变量值,当它改变时采取一些行动
- AngularJS改变注入的全局变量值
- 改变滚动的变量值- jQuery
- 如何在jQuery/jS中使用if语句改变变量值
- 变量值不改变为什么
- 不能改变我的变量值(jQuery)
- 按钮上的变量值会改变,但不会改变显示