javascript - 无法清除输入字段

标签 javascript dom

我正在 JavaScript 中创建一个过滤表。一切正常。但是,唯一似乎不起作用的行是 inputValue = ''。不知道为什么过滤完成后不想清除字段

如果将其替换为 document.querySelector('.form__input').value ,事情似乎可以正常工作,但我不想重复相同的代码。我已经在上面将其声明为 inputValue

const initValues = [
	'Walmart',
	'State Grid',
	'Sinopec Group',
	'China National Petrolium',
	'Royal Dutch Shell',
	'Toyota Motor',
	'Volkswagen',
	'BP',
	'Exxon Mobil',
	'Berkshire Hathaway'
];

const tableCreation = array => {
	const tableBody = document.querySelector('.table__body');
	document.querySelectorAll('tr').forEach(el => el.parentNode.removeChild(el));
	array.forEach(el => {
		const row = document.createElement('tr');
		const cell = document.createElement('td');
		const cellText = document.createTextNode(el);
		cell.appendChild(cellText);
		row.appendChild(cell);
		tableBody.appendChild(row);
	});
};

tableCreation(initValues);

const filterTable = event => {
	event.preventDefault();
	let inputValue = document.querySelector('.form__input').value;
	const filtered = initValues.filter(el => el.toLowerCase().includes(inputValue.toLowerCase()));
	if (filtered) {
		inputValue ? tableCreation(filtered) : tableCreation(initValues);
	}
	inputValue = '';
};

document.querySelector('.form__button').addEventListener('click', filterTable);
<!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="./css/3.css">
	<title>Filtered list</title>
</head>
<body>
	<form class="form" id="form">
		<label for="filter">Filtered: </label>
		<input class="form__input" type="text" id="filter" name="input" placeholder="Insert phrase...">
		<button class="form__button" form="form" type="submit">Filter</button>
	</form>

	<table class="table">
		<tbody class="table__body"></tbody>
	</table>

	<script src="./js/3.js"></script>
</body>
</html>

最佳答案

变量inputValue仅保存字段的实际值,它与字段分离。

您可以将对字段的引用保存为变量并清除值,如下所示:

const inp = document.querySelector('.form__input');
inp.value = '';

关于javascript - 无法清除输入字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56074210/

相关文章:

javascript - 未找到 HTMLImageElement (404)

java - 如何找到具有特定属性值的子元素

javascript - 创建新组件并从 styled-component 继承样式

javascript - 传播语法返回意外的对象

javascript - 关闭选项卡时忽略可见性变化

javascript - JQuery 选择器不工作,而 javascript DOM 工作正常

javascript - 使用 jquery 单击一次后禁用链接?

javascript - Handlebars 和缓存(模板未更新)

javascript - 如何使用 Js 在 HTML BODY 中插入一个元素,然后使用 Js 选择相同的元素,然后向其中附加更多数据?

javascript - 为什么 Youtube 评论不触发 DOM 突变?