尽管我以前使用过许多其他语言,但我才刚刚开始使用 JavaScript。我发现方向很痛苦,我很感激有关如何访问 forEach 循环(或 jQuery .each 循环)中的子元素的一些指导。在这个阶段,我并不真正关心解决方案是 JS 还是 jQuery,我只是想得到一些有用的东西。
假设我有一个使用 jQuery 找到的节点元素,现在我要对每一行进行一些处理,其中包括需要找到一个子元素,其 id 包含与相关父节点相关的索引:
$('.row').each((index, item) => {
var name = item.getElementById(`#name-${index}`);
});
似乎使用 getElementById 选择元素应该很简单,但这会导致“item.getElementById 不是函数”错误。
我也试过 jQuery 方法:
var name = item.find('#name-0')
这会得到一个“item.find 不是函数”错误。
我不知道 item 是否应该在 {} 中 - 我不清楚什么时候需要大括号,什么时候不需要,但是如果我用大括号尝试它,我仍然会收到“.find is not a function”错误.
有人可以指出我做错了什么,或者甚至更好地指出我在记录的某个地方的正确方向。我所能找到的只是非常简单的例子。
编辑以包含最小的 HTML 示例:(并修改以修复丢失的 div 标签)
<div id="container" class="position-relative col-10>
<div id="row-0" class="row position-relative">
<div id="name-0" class="column col-4">User 1</div>
<div id="score-0" class="column col-2">20</div>
</div>
<div id="row-1" class="row position-relative">
<div id="name-1" class="column col-4">User 2</div>
<div id="score-1" class="column col-2">10</div>
</div>
<div id="row-2" class="row position-relative">
<div id="name-2" class="column col-4 ">User 3</div>
<div id="score-2" class="column col-2">5</div>
</div>
</div>
从为什么 getElementById 对文档元素内的元素不起作用?:
容器 ID 应该是唯一的,因此没有理由在另一个容器中按 ID 查找对象。这就是为什么您只需要
document.getElementById
通过其 ID 访问任何元素,而当您按类或标签名称搜索时,您可能只想在特定容器内搜索,这就是为什么您可以这样做的原因x.getElementsByClassName
。
所以getElementById
在item
.
推荐使用一个普通的document.getElementById
,document.querySelector
或者Jquery
像这样一个额外的选择器:
$('.row').each((index, item) => {
// getElementById
var name = document.getElementById(`name-${index}`);
console.log(name.textContent);
// Jquery
var name2 = $(`#name-${index}`)[0];
console.log(name2.textContent);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='row'>
<em id='name-0'>Name 0</em>
<em id='name-1'>Name 1</em>
</div>
注意;上面只是一个例子,因为OP还没有添加示例html,我创建了一个简单的例子。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句