【发布时间】:2020-10-21 17:56:27
【问题描述】:
我有一个网站正在 iFrame 中加载帮助台表单。 10 个输入有 10 个标签。其中 8 个有一个 htmlFor 和一个“控制标签”类。其中一个有一个没有类名的 htmlFor。一个类名为“control-label”,没有 htmlFor。
我需要使用 JavaScript 来获取最后一个标签并添加一个 htmlFor。但是,我不能抓住它。
var labels = document.getElementsByTagName('label')
这将返回一个包含 9 个标签的 HTML 集合,这些标签都具有 htmlFor。它不包括没有 htmlFor 的第 10 个标签。但是,如果我运行:
console.log('Labels: ', labels);
这将显示 10 个标签的列表,但是当我尝试定位第 10 个标签时,它将返回未定义。
var controlLabels = document.getElementsByClassName('control-label')
这将返回一个包含 8 个标签的 HTML 集合,这些标签都具有 htmlFor。它不包括没有 htmlFor 的第 9 个标签。
var labels = [];
for (var i = 0; i < document.getElementsByTagName.length; i++) {
labels.push(document.getElementsByTagName[i]);
}
这得到了一个包含 9 个对象的数组,但同样,不是没有 htmlFor 的标签。
var controlLabels = [];
for (var i = 0; i < document.getElementsByClassName('control-label').length; i++) {
controlLabels.push(document.getElementsByClassName('control-label')[i]);
}
这让我得到了一个包含 8 个标签的数组,同样没有缺少 htmlFor 的标签。
我需要获取最后一个标签,但是当我运行 document.getElementsByX 时,它会得到一个 HTML 集合而不是数组。如何返回所有标签的数组,而不是 HTML 集合,以便我可以定位此标签?
这是 HTML 中的确切代码行:
<label class="control-label">Zip Code * </label>
【问题讨论】:
-
能否包含表单的完整 HTML?另外,您是否尝试在 iframe 中执行此操作?另外,在
setTimeout(() => {}, 1000)中执行查询选择器代码的结果是什么?我想知道是否可能在其他字段之后加载没有for的字段。 -
是的,小部件在 iFrame 中加载,尽管代码是在 iFrame 底部注入的。添加 setTimeout 现在正在修复它,因为您是正确的,最终标签正在其他字段之后加载。
-
哦,太好了。我会发布一个答案。
-
我发布了一些解决方案的答案。
标签: javascript html