HTML5-根据输入为输出元素选择公式
我正在设计一个简单的计算器,它有三个输入和一个输出 我想知道是否有可能更改输出元素“使用”的公式,根据使用的输入字段(*) 例如,我们有树输入:输入A、输入B和输入CHTML5-根据输入为输出元素选择公式,html,formula,output,Html,Formula,Output,我正在设计一个简单的计算器,它有三个输入和一个输出 我想知道是否有可能更改输出元素“使用”的公式,根据使用的输入字段(*) 例如,我们有树输入:输入A、输入B和输入C 如果使用A和B(C为空),则输出公式应为“A+B” 如果使用A和C(B为空),则输出公式应为“A*C” 如果使用B和C(且A为空),则输出公式应为“B/C” 那么,如何根据使用的输入更改输出元素使用的公式 这是一个简单的例子,我希望你能明白这一点:-) 根据要求,下面是一些示例代码 [code] <!DOCTYP
- 如果使用A和B(C为空),则输出公式应为“A+B”
- 如果使用A和C(B为空),则输出公式应为“A*C”
- 如果使用B和C(且A为空),则输出公式应为“B/C”
[code]
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8"></meta>
<script>
function Test(){
<!--alert('Formula change!');-->
if (input_a.valueAsNumber && input_b.valueAsNumber){
alert('Formula One');
o.value=input_a.valueAsNumber+input_b.valueAsNumber;
}
if (input_b.value && input_c.value){
alert('Formula Two');
o.value=input_a.valueAsNumber*input_c.valueAsNumber;
}
if (input_a.value && input_c.value){
alert('Formula Three');
o.value=input_b.valueAsNumber/input_c.valueAsNumber;
}
}
</script>
<style>
</style>
<title>Example</title>
</head>
<body onload="">
<form onsubmit="return false" oninput="
Test();
<!--o.value=input_a.valueAsNumber+input_b.valueAsNumber;-->
">
<input name="input_a" id="input_a" type="number" step="any" value="" placeholder="Input A"></br>
<input name="input_b" id="input_b" type="number" step="any" value="" placeholder="Input B"></br>
<input name="input_c" id="input_c" type="number" step="any" value="" placeholder="Input C"></br>
</br>
<output name="o" for="a b c"></output>
</form>
</body>
[/code]
[代码]
功能测试(){
if(输入a.valueAsNumber和输入b.valueAsNumber){
警报(“一级方程式”);
o、 值=输入值a.valueAsNumber+输入值b.valueAsNumber;
}
if(输入b.value和输入c.value){
警报(“二级方程式”);
o、 值=输入值a.valueAsNumber*输入值c.valueAsNumber;
}
if(输入a.value&&input c.value){
警报(“三级方程式”);
o、 值=输入\ b.valueAsNumber/input \ c.valueAsNumber;
}
}
例子
我通过使用Eval函数使它工作
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="UTF-8"></meta>
<script>
function SelectFormula(){
if (input_a.valueAsNumber && input_b.valueAsNumber){
return "input_a.valueAsNumber+input_b.valueAsNumber";
} else if (input_b.value && input_c.value){
return "input_b.valueAsNumber*input_c.valueAsNumber";
} else if (input_a.value && input_c.value){
return "input_a.valueAsNumber/input_c.valueAsNumber";
}
}
</script>
<style>
</style>
<title>Example</title>
</head>
<body onload="">
<form onsubmit="return false" oninput="
o.value=eval(SelectFormula());
">
Input A: <input name="input_a" id="input_a" type="number" step="any" value="" placeholder="Input A"></br>
Input B: <input name="input_b" id="input_b" type="number" step="any" value="" placeholder="Input B"></br>
Input C: <input name="input_c" id="input_c" type="number" step="any" value="" placeholder="Input C"></br>
</br>
Output: <output name="o" for="a b c"></output>
</form>
</body>
函数SelectFormula(){
if(输入a.valueAsNumber和输入b.valueAsNumber){
返回“input_a.valueAsNumber+input_b.valueAsNumber”;
}else if(输入b.值和输入c.值){
返回“输入值编号*输入值编号”;
}else if(输入a.value&&input c.value){
返回“输入值编号/输入值编号”;
}
}
例子
输入A:
输入B:
输入C:
输出:
我宁愿不使用Eval函数,而是设置o.value=。。。直接在函数中不起作用:-(听起来很琐碎-您尝试了什么?请参阅我的OT:-)中的代码@Alnitak,有关于eval问题的线索吗?(见下文)有人知道如何避免使用Eval函数吗?它是否以任何方式限制输出标记?