javascript - 使用 Javascript 动态更改 DOM 中的文本
问题描述
我正在开发一个应用程序,我在从后端提取的 Javascript 对象中有一些数据。我正在尝试遍历 Javascript 对象并填充 ul 内的 DOM,但它无法正常工作,ul 有我想在循环后立即更改的现有文本。
从浏览器控制台选项卡复制的 Javascript 对象
0: "Mathematics"
1: "English"
2: "Swahili"
3: "Germany"
逻辑
$.each(planDetails, function (key, value) {
$("#packageBenefits ul li" + key).text(value);
});
将数据填充到的标记
<div class="card">
<div class="card-header">All subjects</div>
<div class="card-body" id="packageBenefits">
<ul>
<li><span> Mathematics </span> </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum .............. </li>
</ul>
</div>
</div>
解决方案
您可以.eq()
在 jQuery 中使用该方法...
var planDetails = ["Mathematics","English","Swahili","Germany"];
$.each(planDetails, function (key, value) {
$("#packageBenefits ul li").eq(key).text(value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="card">
<div class="card-header">All subjects</div>
<div class="card-body" id="packageBenefits">
<ul>
<li><span> Mathematics </span> </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum .............. </li>
</ul>
</div>
</div>
这将获取nth
对象,并相应地设置文本值。
对上述内容的一个小改进是在 之外获取对象$.each
,否则 jQuery 必须在函数的每个单独调用中查找所有对象$.each
,然后获取nth
项目...
var planDetails = ["Mathematics","English","Swahili","Germany"];
var $lis = $("#packageBenefits ul li");
$.each(planDetails, function (key, value) {
$lis.eq(key).text(value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="card">
<div class="card-header">All subjects</div>
<div class="card-body" id="packageBenefits">
<ul>
<li><span> Mathematics </span> </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum .............. </li>
</ul>
</div>
</div>
如果正如@scrappedcola 在他们的评论中所建议的那样,您希望它从第二项开始更新......这只是+1
在.eq(key)
......
var planDetails = ["Mathematics","English","Swahili","Germany"];
var $lis = $("#packageBenefits ul li");
$.each(planDetails, function (key, value) {
$lis.eq(key+1).text(value);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="card">
<div class="card-header">All subjects</div>
<div class="card-body" id="packageBenefits">
<ul>
<li><span> Mathematics </span> </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum ............... </li>
<li>lorem ipsum .............. </li>
</ul>
</div>
</div>
推荐阅读
- ios - iOS - 阻止其他公司开发人员在他们的应用程序中以 WKWebview 或 UIWebview 加载我的网站?
- javascript - 仅在单击特定父级时删除内部元素的实例
- python - 如何将我的列表转换为数组数组?
- excel - 找不到 Excel 源数据
- excel - VBA过滤唯一值并将其复制到新工作表
- python-3.x - 不同python模块的函数中不识别锁
- keycloak - Keycloak 用户选择 OTP 或 SMS
- javascript - 在 JSGrid 中更改日期格式
- perl - 从严格的编译指示中免除一段 perl 代码
- bash - 搜索目录文件并查找文件名,保存到新文件 - bash