javascript - GET http://0.0.0.0:8080/index.html?age=8&rel= 404 (/找不到对象)
问题描述
我正在尝试查看通过 console.log 输入表单的值,但收到此错误消息。我不确定为什么会这样。它是否以某种方式连接到本地服务器?还是 JS 的问题?将不胜感激任何可以散发的光芒。谢谢你!
这是 JavaScript 代码 (index.js)
// Person Constructor
function Person(age, relationship, smoker){
this.age = age;
this.relationship = relationship;
this.smoker = smoker;
}
// UI Constructor
function UI() {}
// Event Listeners
document.querySelector('form').addEventListener('submit',
function(e){
const age = document.getElementsByName("age")[0].value,
relationship = document.getElementsByName("relationship")[0].value,
smoker = document.getElementsByName("smoker")[0].value
console.log(age, relationship, smoker)
e.preventDefault();
});
这是 index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Household builder</title>
<style>
.debug {
font-family: monospace;
border: 1px solid black;
padding: 10px;
display: none;
}
</style>
</head>
<body>
<h1>Household builder</h1>
<div class="builder">
<ol class="household"></ol>
<form>
<div>
<label>Age
<input type="text" name="age">
</label>
</div>
<div>
<label>Relationship
<select name="rel">
<option value="">---</option>
<option value="self">Self</option>
<option value="spouse">Spouse</option>
<option value="child">Child</option>
<option value="parent">Parent</option>
<option value="grandparent">Grandparent</option>
<option value="other">Other</option>
</select>
</label>
</div>
<div>
<label>Smoker?
<input type="checkbox" name="smoker">
</label>
</div>
<div>
<button class="add">add</button>
</div>
<div>
<button type="submit">submit</button>
</div>
</form>
</div>
<pre class="debug"></pre>
<script type="text/javascript" src="./index.js"></script>
</body>
</html>
解决方案
您正在使用document.getElementsByName("relationship")
,但您的关系元素实际上正在使用name="rel"
; 切换那条线document.getElementsByName("rel")
,你应该很好!
您收到错误消息是因为该 JS 行失败,这意味着后面的e.preventDefault();
行永远不会执行,这意味着您的表单实际上正在发布。如果你检查 JS 控制台,你应该会看到类似的错误TypeError: document.getElementsByName(...)[0] is undefined
另请注意,对于您的复选框,您现在正在检索value
属性,该属性始终只是字符串“on”;您可能想要使用该checked
属性,它会告诉您该框是否已被选中。
推荐阅读
- python - SessionNotCreatedException:消息:会话未从断开连接创建:无法在 Linux Centos 7 服务器上使用 Chromedriver 连接到渲染器
- asp.net-core - 让 Xero .Net Core OAuth2 示例工作
- uri - 将参数传递给 Tableau 报表
- php - 支付成功后无现金支付网关不返回任何数据
- google-bigquery - 是否可以选择在大查询中进行批量/自动数据回填?
- python - Python按其他列计算列值
- gpu - 在 Google Colab 上请求特定类型的 GPU
- mysql - 在 mysql 查询中没有任何中断的情况下获取最热门的继续日期
- apache - 无法在产品上导入文件(Symfony 3.4)
- c++ - 没有得到字符串中的预期输出