javascript - 替换嵌套 div 中的文本
问题描述
我有 jQuery,它计算页面上有多少个部分以及哪个块是哪个。
以下示例演示了这一点:
$(function() {
var totalQuestionAmount = $(".question").length;
$(".question-total__integer").text(totalQuestionAmount);
$(".question-number").each(function(index) {
console.log(index + 1);
$(this).append(index + 1);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
但是,您可以看到结果是倒退的。它应该是“1 of 4”、“2 of 4”等等。
我尝试了一些不同的东西:
.text()
$(function() {
var totalQuestionAmount = $(".question").length;
$(".question-total__integer").text(totalQuestionAmount);
$(".question-number").each(function(index) {
console.log(index + 1);
$(this).text(index + 1);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
但它不起作用,因为它会覆盖所有内容
.html()
$(function() {
var totalQuestionAmount = $(".question").length;
$(".question-total__integer").text(totalQuestionAmount);
$(".question-number").each(function(index) {
console.log(index + 1);
$(this).html(index + 1);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total">of <span class="question-total__integer"></span></span></div>
</div>
结果相同。
为什么顺序倒了?如何在总计的标记上方插入值,使其显示为“x of y”?
解决方案
您的 HTML 正在这样做。修复:立即关闭第一个span
,在“of”这个词之前,而不是在另一个之后span
,然后span
在你的代码中定位第一个和第二个:
$(function() {
var totalQuestionAmount = $(".question").length;
$(".question-total__integer").text(totalQuestionAmount);
$(".question-total").each(function(index) {
console.log(index + 1);
$(this).append(index + 1);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="question">
<div class="question-number"><span class="question-total"></span> of <span class="question-total__integer"></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total"></span> of <span class="question-total__integer"></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total"></span> of <span class="question-total__integer"></span></div>
</div>
<div class="question">
<div class="question-number"><span class="question-total"></span> of <span class="question-total__integer"></span></div>
</div>
推荐阅读
- r - 根据 R 中的几种模式拆分列
- php - 如何使推送通知将用户发送到应用程序中的特定页面?
- android - Android Kotlin - 移除/重置 RecyclerView OnScrollListener
- python - 如何使用一系列 2D 图像创建 3D 图像
- assembly - 如果 AL 包含 I 或 3,则显示“o”;如果 AL 包含 2 或 4,则在汇编代码中显示“e”
- swift - AWSAppSync 快速,不获取 DynamoDB 中的所有记录
- c# - 为什么我没有“访问控制允许来源”?
- swagger-ui - 如何在 swagger php 中添加信息部分
- vue.js - 如何使用fabricjs更改vue中的图像
- javascript - JavaScript计算的日期在周末登陆,如何更改为下周一