javascript - JavaScript 通过指定表单和类名来更改输入值
问题描述
我需要一种方法来通过表单和类名引用它来更改输入框的值。给定一个看起来像这样的表格:
<form name="foo">
<input type="text" class="bar" value="someval" />
</form>
有没有一种解决方案?我尝试了一些事情,例如:
document.foo.getElementsByClassName('bar')[0].setAttribute("value", "newvalue");
和
document.forms['foo'].getElementsByClassName('bar')[0].setAttribute("value", "newvalue");
无济于事。一定有一些明显的东西我错过了,但是什么?
解决方案
这正是.querySelector()
旨在提供帮助的内容。您可以将任何有效的 CSS 选择器传递给它,它将返回与查询匹配或未undefined
找到匹配项的第一个元素。
并且,不要使用.getElementsByClassName()
或document.forms
(永远),因为它们都是古老的技术,要么引入了主要的性能问题,要么是不如我们今天拥有的 API 的非现代方法。
// Find the input element with a class of "bar" that is a direct child of a form with a name attribute of "foo"
document.querySelector("form[name='foo'] > input.bar").value = "blah"
<form name="foo">
<input type="text" class="bar" value="someval" />
</form>
推荐阅读
- java - Java从表中获取分层数据并生成树
- database - 如何正确映射孩子 - @Manytoone-> Parent 关系,其中父母在 JPA 中使用 Hiberate 有一个 @EmbeddedID
- javascript - 我们可以在一个函数中处理带有 a/x.mp4 和 x.mp4 的文件名吗?使用 javascript
- python - 将 args 和 kwargs 规范化为参数规范形式
- groovy - Groovy:2.5.3 版本上的坏字符,但 1.5.7 中没有
- azure - 如何使用 Azure Key-vault 检索连接字符串,然后为 ServiceBusTrigger 设置为 AzureWebJobsServiceBus
- php - 我的会话代码有一些问题,我不知道发生了什么?
- typescript - Dart 中来自 TypeScript 的类型别名
- ios - 将框架嵌入到另一个框架中
- java - 将 spring.factories 分成多个文件