javascript - 无法获取元素的值
问题描述
我正在尝试获取输入元素的值。该元素处于模式中,并且模式数据填充有不同的值,具体取决于我单击以打开模式的按钮。
var modalBody = document.getElementsByClassName("modal-body");
for(var i = 0; i < modalbody.length; i++) {
var mac = modalBody.item(i).getElementsByTagName('div')[2].getElementById("mac-name").value;
alert(mac);
}
错误:TypeError:modalBody.item(...).getElementsByTagName(...)[2].getElementById 不是函数
我也尝试过,document.getElementById("mac-name").value;
但返回空白
<form method="post">
<div class="modal-body">
<div class="form-group">
<label for="station-name" class="col-form-label">ID:</label>
<input class="form-control" id="station-id" name="edit--id" required="" type="text" hidden="">
<input class="form-control" id="station-name" name="edit--name" required="" type="text">
</div>
<div class="form-group">
<label for="profile-name" class="col-form-label">Profile:</label>
<select type="text" class="form-control" id="profile-name" name="edit-profile" required="">
<option>name1</option>
<option>name2</option>
</select>
</div>
<div class="form-group">
<label for="mac-name" class="col-form-label">MAC Address:</label>
<input class="form-control" id="mac-name" name="edit-mac" required="" type="text">
</div>
</div>
</form>
解决方案
而不是在每个元素上使用getElementsByClassName
然后运行以下命令:
var mac = modalBody.item(i).getElementsByTagName('div')[2].getElementById("mac-name").value;
您可以改用 usequerySelectorAll
并传入.modal-body div #mac-name
. mac-name
这将在div
一个具有 class 的元素中选择所有具有 id的元素modal-body
。您可以使用此结果循环遍历每个元素并获取每个值:
var macs = document.querySelectorAll('.modal-body div #mac-name');
请参见下面的示例:
var macs = document.querySelectorAll('.modal-body div #mac-name');
for (var i = 0; i < macs.length; i++) {
var mac = macs[i].value;
console.log(mac);
}
<form method="post">
<div class="modal-body">
<div class="form-group">
<label for="station-name" class="col-form-label">ID:</label>
<input class="form-control" id="station-id1" name="edit--id" required="" type="text" hidden="">
<input class="form-control" id="station-name1" name="edit--name" required="" type="text">
</div>
<div class="form-group">
<label for="profile-name" class="col-form-label">Profile:</label>
<select type="text" class="form-control" id="profile-name1" name="edit-profile" required="">
<option>name1</option>
<option>name2</option>
</select>
</div>
<div class="form-group">
<label for="mac-name" class="col-form-label">MAC Address:</label>
<input class="form-control" id="mac-name" name="edit-mac" value="Addr 1" required="" type="text">
</div>
</div>
<div class="modal-body">
<div class="form-group">
<label for="station-name" class="col-form-label">ID:</label>
<input class="form-control" id="station-id2" name="edit--id" required="" type="text" hidden="">
<input class="form-control" id="station-name2" name="edit--name" required="" type="text">
</div>
<div class="form-group">
<label for="profile-name" class="col-form-label">Profile:</label>
<select type="text" class="form-control" id="profile-name2" name="edit-profile" required="">
<option>name1</option>
<option>name2</option>
</select>
</div>
<div class="form-group">
<label for="mac-name" class="col-form-label">MAC Address:</label>
<input class="form-control" id="mac-name" name="edit-mac" value="Addr 2" required="" type="text">
</div>
</div>
</form>
推荐阅读
- android - 如何将动态阈值(转换为黑白)应用于颤动的灰度图像?
- react-native - 如何让 BackHandler 工作?
- java - 在 ElasticSearch 7.4 java 客户端的 geoShapeQuery 中使用 geojson 多边形
- javascript - 词法环境/编译在这里如何工作
- python - 创建类时有没有办法再次计算类变量?
- javascript - Vue this.$http.delete() 仅返回 500 内部服务器
- html - CSS Precedence Oddity - “#id tag” > “#tagId” 为什么?
- python - 如何使用 os 将文件保存到新文件夹?
- rust - 如何调用具有泛型类型的结构的关联函数?
- php - 检查是否在 Symfony 表达式语言注释中设置了用户对象