javascript - 如何将“function init()”与我在 JavaScript 中的代码一起使用?
问题描述
我一直在修补我制作的一些代码。我正在寻找一种包含<form action="#" method="post" id="theForm"></form>
在其中的方法。为什么?因为我在创建它时忘记将它添加到我的HTML中,我想知道我是否可以。有人告诉我,在没有它的情况下提交带有输入字段的提交在语义上是不正确的?
问题:如果我尝试添加 JS 代码:
function init() {
'use strict';
document.getElementById('theForm').onsubmit = insertyourfunctionhere;
}
window.onload = init;
结合 HTML <form action="#" method="post" id="theForm"></form>
(理想情况下将包装器替换为我现有的代码),我找不到修改我的代码以使用此设置的方法。任何见解都会很棒。
这是我的代码: HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Temperature Averager</title>
<link rel="stylesheet" href="css/styles.css">
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div class="grid-container">
<div class="item1">
<div class="wrapper">
<fieldset>
<legend>Enter in two temperatures</legend>
<div><label for="tempLow">Low Temp:</label><input type="text" id="tempLow" required></div>
<div><label for="tempHigh">High Temp:</label> <input type="text" id="tempHigh" required></div>
<div><button id="submit" onclick="return validateForm()">Add the temperatures!</button></div>
<table id="myTable"></table>
</fieldset>
</div>
</div>
</div>
</body>
</html>
这是我的javascript:
var tempLOW = [];
var tempHIGH = [];
var i = 0;
var todayS = "";
var today = new Date();
function datePrint() {
'use strict';
var dd = today.getDate(),
mm = today.getMonth() + 1,
yyyy = today.getFullYear();
if (dd < 10) {
dd = '0' + dd;
}
if (mm < 10) {
mm = '0' + mm;
}
todayS = mm + '/' + dd + '/' + yyyy;
today.setDate(today.getDate() - 1);
}
function deleterow() {
'use strict';
var table = document.getElementById("myTable"),
rowCount = table.rows.length;
table.deleteRow(rowCount - 1);
}
function generateRow(dt, tL, tH) {
'use strict';
var table = document.getElementById("myTable"),
row = table.insertRow(-1),
cell1 = row.insertCell(0),
cell2 = row.insertCell(1),
cell3 = row.insertCell(2);
cell1.innerHTML = dt;
cell2.innerHTML = tL;
cell3.innerHTML = tH;
}
function calcAvg() {
'use strict';
var table = document.getElementById("myTable"),
sumLow = 0,
sumHigh = 0,
avgLow,
avgHigh;
for (var i = 0; i < tempLOW.length; i++) {
sumLow += parseInt(tempLOW[i]);
sumHigh += parseInt(tempHIGH[i]);
}
avgLow = sumLow / tempLOW.length;
avgHigh = sumHigh / tempHIGH.length;
generateRow("Averages", avgLow.toFixed(2), avgHigh.toFixed(2));
}
function validateForm() {
var t1 = document.getElementById("tempLow").value;
var t2 = document.getElementById("tempHigh").value;
if (t1 == "" || t2 == "") {
alert("Both temprature values must be entered");
return false;
} else {
tempLOW.push(document.getElementById("tempLow").value);
tempHIGH.push(document.getElementById("tempHigh").value);
if (i == 0) {
generateRow("Date", "LOW TEMP", "HIGH TEMP");
datePrint();
generateRow(todayS, t1, t2);
calcAvg();
i++;
} else {
deleterow();
datePrint();
generateRow(todayS, t1, t2);
calcAvg();
i++;
}
}
}
解决方案
好吧,根据 MDN:
“HTML 元素代表一个文档部分,其中包含用于提交信息的交互式控件。”</p>
如果您打算提交用户输入,为什么不使用它呢?我同意不使用,这在语义上有点不正确。
动态注入标签是一种可能的技术,但您应该问问自己这是否是一个好方法。
来源:https ://developer.mozilla.org/en-US/docs/Web/HTML/Element#forms
推荐阅读
- python-3.x - 列出类的属性值
- google-apps-script - 如何定义 SpreadsheetApp.getActiveSheet()
- gradle - Gradle 无法编译。Lib寻找不相关的drawable
- mysql - 如何使用 SQL 统计第一周的事件
- rust - 如何从 Rust 的进程内部重定向 stderr?
- java - 如何使用 JSoup 提取 html 代码中的特定文本
- c# - 如何清除数据库异常
- node.js - 在按钮单击时更新模态值而不重新加载
- javascript - 如何将 bootswatch 主题导入 react-bootstrap?
- javascript - vue-multiselect 不显示数组(选项:数组 [0])