我有一套定制的程序,我维护客户的网站。我们有一个转换能量的过程,用于特定的校准。我们取一个阅读,乘以一个偏移量,然后将结果输入测试表格。我们的网页只有有限的功能,所以我试图使用HTML形式以及JavaScript的计算。
下面是我所做的,但由于某种原因,结果没有显示在每个输入的读数的右侧。我只会写一点代码,所以我可能错过了一些明显的东西。
<!DOCTYPE html>
<html>
<body>
<h2>OAI Offset Caclculation</h2>
<script>
function oaicalc(offset, reading1, reading2, reading3, reading4, reading5) {
//value near 1.000
var offset = parseFloat(document.getElementById('offset').value);
//Energy value in mj 200.0> value <1.000
var r1 = parseFloat(document.getElementById('reading1').value);
var r2 = parseFloat(document.getElementById('reading2').value);
var r3 = parseFloat(document.getElementById('reading3').value);
var r4 = parseFloat(document.getElementById('reading4').value);
var r5 = parseFloat(document.getElementById('reading5').value);
//Corrected Energy Values
var o1 = offset * r1;
var o2 = offset * r2;
var o3 = offset * r3;
var o4 = offset * r4;
var o5 = offset * r5;
//Chage HTML form Output
document.getElementById('output1').innerHTML = o1;
document.getElementById('output2').innerHTML = o2;
document.getElementById('output3').innerHTML = o3;
document.getElementById('output4').innerHTML = o4;
document.getElementById('output5').innerHTML = o5;
}
</script>
<form id="oaioffsetform">
<label for="offset">Offset:</label><br>
<input type="number" id="offset" name="offset" value="0">
<br>
<br>
<label for="reading1">OAI Reading 1:</label><br>
<input type="number" id="reading1" name="reading1" value="0" oninput="oaicalc()">: <output name="output1">0</output>
<br>
<br>
<label for="reading2">OAI Reading 2:</label><br>
<input type="number" id="reading2" name="reading2" value="0" oninput="oaicalc()">: <output name="output2">0</output>
<br>
<br>
<label for="reading3">OAI Reading 3:</label><br>
<input type="number" id="reading3" name="reading3" value="0" oninput="oaicalc()">: <output name="output3">0</output>
<br>
<br>
<label for="reading4">OAI Reading 4:</label><br>
<input type="number" id="reading4" name="reading4" value="0" oninput="oaicalc()">: <output name="output4">0</output>
<br>
<br>
<label for="reading5">OAI Reading 5:</label><br>
<input type="number" id="reading5" name="reading5" value="0" oninput="oaicalc()">: <output name="output5">0</output><br><br>
</form>
</body>
</html>
2条答案
按热度按时间vaqhlq811#
在这里,我为表单上的输入创建了一个通用事件侦听器。input元素是事件对象上的目标。您不需要解析输入的值,因为它们的类型是number。
如果更新了偏移量,则需要遍历所有输入元素以计算新值。
一般性意见:对form和input元素都使用name属性。我使它很容易找到正确的元素。
ifsvaxew2#
正如在注解中提到的,您的表单字段具有
name
属性,但您试图访问它们,就好像它们具有id
属性一样。您可以使用.querySelector()
通过name
属性访问元素。您确实应该努力避免在元素上使用id
属性,因为它们的使用会使解决方案变得脆弱,并导致应用程序向下扩展的问题。在大多数情况下,您可以完全避免它们。您的HTML不正确,原因如下:
<head>
元素。h1
,只有当您试图定义该h1
的子部分时,才会使用h2
。不要使用标题元素,因为它们会影响文本的样式,你可以使用CSS来改变样式。标题用于创建文档结构,供那些依赖辅助技术(如屏幕阅读器)的人使用,以帮助他们导航页面内容。br
元素来创建页面上的视觉对齐。br
元素仅用于分解必须出现在下一行的块级内容(即段落,div等)。它们不应用于向页面添加白色垂直空间。再一次,使用CSS。oninput
这样的内联事件属性。相反,使用.addEventListener()
在JavaScript中进行事件绑定。应尽可能避免使用
.innerHTML
,因为使用它会对安全和性能产生影响。由于您正在处理的数据不包含任何需要解析的HTML,因此应该使用.textContent
。请参见下面的更新代码: