在javascript中访问表单中没有id的元素



作为网络安全课程的一部分,我有一个作业,我应该提交一个带有特定输入值的表单。

下面是我正在使用的相关源代码片段:(消息传递系统的源代码)

<div class="form-group">
<label for="inputSubject">Subject:</label>
<input name="subject" type="text" class="form-control" id="inputSubject" placeholder="Enter a subject" pattern=".{5,}" required>
</div>
<div class="form-group">
<textarea name="contents" class="form-control" rows="10" placeholder="Enter your message" pattern=".{5,}" required></textarea>
</div>

每当我试图使用getElementsbyName或getElemetnsbyTagName设置文本区的值时,我得到错误"未捕获的TypeError:不能设置null的属性。知道怎么解决这个问题吗?

两件事:

  1. 确保正确引用元素
  2. 设置valuetextContent
const textArea = document.querySelector('textarea[name="contents"]');
textArea.textContent = `whatever you want it to say`.

用这种方式在html中导入脚本<script defer src="script.js"></script>,以便创建DOM树。在导入的脚本中,可以这样做:document.getElementsByTagName("textarea")[0].value = "Test Value";

作为getElementsByName返回一个节点列表,并且您只有一个具有该名称的元素:

这应该为您工作:

document.getElementsByName("contents")[0].value = "hello world"

如何实现:

<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="form-group">
<label for="inputSubject">Subject:</label>
<input name="subject" type="text" class="form-control" id="inputSubject" placeholder="Enter a subject"
pattern=".{5,}" required>
</div>
<div class="form-group">
<textarea name="contents" class="form-control" rows="10" placeholder="Enter your message" pattern=".{5,}"
required></textarea>
</div>
<script>
document.getElementsByName('contents')[0].value = 'hello world'
</script>
</body>
</html>

首先:确保您的文本区域确实存在于页面中,然后调用您的函数,您可以使用window.onload$(document).ready函数。如果你的函数是在textarea被渲染到页面之前执行的,你会得到null异常错误。

秒:通过所有方法,如getElements而不是getElement(没有s)请注意->复数而且不是单数

var element = document.getElemetnsByTagName('div');

如果你想操作它们,不要忘记访问数组。

element[0].value

element.value

希望对你有帮助。

最新更新