[英]How to change only a part of an “inner.html”?
我有这个计数器,它根据要求 - 向后或按升序计数,它工作得很好但是我想显示文本以及每个数字,因为它们正在被计数 - 但是一旦有一个文本就会改变改变。 所以问题是 - 我怎样才能有一个只影响它的一部分而不是全部内容的 innerhtml。 我希望文本保持原样。
这里是 html 和 JS。
<div class="container">
<div class="number mt-3">100 **[I WANT TO ADD SOME TEXT HERE]** </div>
</div>
JS
const numberEl = document.querySelector('.number');
let startNumber = parseInt(numberEl.innerHTML);
const endNumber = 0;
const ticker = setInterval(() => {
numberEl.innerHTML = startNumber--;
if(startNumber === endNumber - 1) {
clearInterval(ticker);
}
}, 200);
您还可以在此处找到代码笔: https://codepen.io/kenkozma17/pen/XWdbdrd
您可以使用 += 到 append HTML 并使用<br>
换行。
numberEl.innerHTML += "<br>" + startNumber--;
要仅更改倒计时数字,您可以将其包含在一个跨度内,让您可以自由修改 div 中的其他文本。
<div class="number mt-3"><span>100</span> **[I WANT TO ADD SOME TEXT HERE]** </div>
<script>
numberEl.querySelector('span').innerHTML = startNumber--;
<script>
你也可以这样做:
<div class="container"> <h2>This number will increment from 100 to 200</h2> <p><span class="number mt-3">100</span>Some text</p> </div>
你可以试试这个:
const numberEl = document.querySelector('.number'); let startNumber = parseInt(numberEl.innerHTML); let extraText = document.querySelector('.number span').innerText; const endNumber = 200; const ticker = setInterval(() => { numberEl.innerHTML = (startNumber++) + extraText; if(startNumber === endNumber + 1) { clearInterval(ticker); } }, 100);
.container { text-align: center; margin-top: 5em; }.number { font-weight: 500; font-size: 3em; }
<div class="container"> <h2>This number will increment from 100 to 200</h2> <div class="number mt-3">100<span> Your Text</span></div> </div>
好的,我也会让我的评论成为答案;)
@MohammadQasim 这里是向计数器添加字符串的想法;) http://codepen.io/gc-nomade/pen/OJNympB – G-Cyrillus 7 分钟前
或@MohammadQasim http://codepen.io/gc-nomade/pen/yLOYboL ;) 如果您需要 HTML – G-Cyrillus 4 分钟前的文本
const numberEl = document.querySelector('.number'); let startNumber = parseInt(numberEl.innerHTML); let txt=" My Text"; const endNumber = 200; const ticker = setInterval(() => { numberEl.innerHTML = startNumber++ + txt; if(startNumber === endNumber + 1) { clearInterval(ticker); } }, 100);
.container { text-align: center; margin-top: 5em; }.number { font-weight: 500; font-size: 3em; }
<div class="container"> <h2>This number will increment from 100 to 200</h2> <div class="number mt-3">100 </div> </div>
const numberEl = document.querySelector('.number'); let startNumber = parseInt(numberEl.innerHTML); let txt=document.querySelector('.number span').textContent; const endNumber = 200; const ticker = setInterval(() => { numberEl.innerHTML = startNumber++ + txt; if(startNumber === endNumber + 1) { clearInterval(ticker); } }, 100);
.container { text-align: center; margin-top: 5em; }.number { font-weight: 500; font-size: 3em; }
<div class="container"> <h2>This number will increment from 100 to 200</h2> <div class="number mt-3">100 <span> text I want to keep & see </span></div> </div>
我会给出这个想法,只需将您的文本分隔在另一个带有 ID 的 Div 中。
<div class="container">
<div class="number mt-3">
100
</div>
<div id="changeSubContent">
**[I WANT TO ADD SOME TEXT HERE]**
</div>
</div>
然后您可以更改子内容:
document.getElementById("changeSubContent").innerHTML = "Your Text";
因此,您可以根据需要自定义每个 div 中的内容。
如果您只想在元素的开头或结尾添加一些内容,您可能会查看.insertAdjacentHTML
方法。
或者,如果您希望能够重复定位 div 中的特定区域,您可以考虑在 div 中添加专用元素来保存特定的内容,如以下演示代码所示:
const numSpan = document.getElementById("numSpan"), textSpan = document.getElementById("textSpan"); let countdownNumber = parseInt(numSpan.textContent); const endNumber = 0; const ticker = setInterval(() => { numSpan.textContent = countdownNumber--; if (countdownNumber === endNumber - 1) { showBlastoff(); clearInterval(ticker); } }, 200); function showBlastoff() { textSpan.textContent = "-- Blastoff;!!"; }
<div class="container"> <div class="number mt-3"> <span id="numSpan">30</span> <span id="textSpan">... and counting down...</span> </div> </div>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.