【发布时间】:2021-04-12 19:35:19
【问题描述】:
我有以下内容,想知道 taskInput 是如何更新的。
我在我的 js 顶部抓取 taskInput。然后我在“提交”表单中添加一个监听器。所以当我通过点击添加任务提交表单时,为什么我不必再次抓取 taskInput 来查看它的新值?
const taskInput = document.getElementById('task');
const form = document.querySelector('form');
const filter = document.querySelector('input[name="filter"]');
const taskList = document.querySelector('ul.collection');
const clearall = document.querySelector('.clear-tasks');
loadAllEventListeners()
function loadAllEventListeners(){
form.addEventListener('submit',submit)
}
function submit(e){
e.preventDefault();
console.log(taskInput.value)
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/css/materialize.min.css">
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
<title>Task List</title>
</head>
<body>
<div class="container">
<div class="row">
<div class="col s12">
<div id="main" class="card">
<div class="card-content">
<span class="card-title">Task List 1</span>
<div class="row">
<form id="task-form">
<div class="input-field col s12">
<input type="text" name="task" id="task">
<label for="task">New Task </label>
</div>
<input type="submit" value="Add Task" class="btn">
</form>
</div>
</div>
<div class="card-action">
<h5 id="task-title">Tasks</h5>
<div class="input-field col s12">
<input type="text" name="filter" id="filter">
<label for="filter">Filter Tasks</label>
</div>
<ul class="collection"></ul>
<a href="#" class="clear-tasks btn black">Clear Tasks</a>
</div>
</div>
</div>
</div>
</div>
<script
src="https://code.jquery.com/jquery-3.2.1.js"
integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE="
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.100.2/js/materialize.min.js"></script>
</body>
</html>
【问题讨论】:
-
很难理解您的问题。
taskInput变量设置为<input type="text" name="task" id="task">DOM 元素,因此taskInput.value将始终保持<input>的当前 值。 -
另外,不太清楚这与addeventlistener 或timing 有什么关系。
-
你把对元素的引用保存在变量中,如果元素没有改变,为什么还要再次获取对元素的引用?
标签: javascript addeventlistener timing updating