我有一个格式为“xxx - yyy - zzz”的单词列表,因此“ - ”是分隔符。我希望做的只是每隔几秒随机增加一个单词的大小,以突出显示该单词。
我的方法是将列表包装在 div 中:
<div id="highlight-list">XXX - YYY - ZZZ</a>
然后使用类似的东西(尚未测试!):
var fullList = document.querySelector("#highlight-list");
var regex = // *- *//;
var eachItem = fullList.innerHTML.split(regex);
fullList.innerHTML = "";
for(var word in eachItem){
fullList.innerHTML += "<span>" + eachItem[word] + "</span>";
}
用跨度将 Div 中的单个单词包裹起来。我的宏伟计划是然后将 CSS 类随机应用于每个跨度几秒钟,然后删除该类,然后重复......但我在第一步中遇到了困难!
任何帮助将不胜感激,谢谢。
您的代码非常适合简单的文本分割(在 HTML 上分割是另一回事)。单词可以分割成一个简单的字符串:
var words = fullList.innerHTML.split(" - ");
每隔几秒突出显示一个随机单词:
setInterval()
设置重复间隔Math.random()
获取随机数更新片段:
var fullList = document.querySelector("#highlight-list");
var words = fullList.innerHTML.split(" - ");
fullList.innerHTML = "";
for (var wordIdx in words) {
fullList.innerHTML += "<span>" + words[wordIdx] + "</span>";
}
setInterval(() => {
let spans = $("#highlight-list > span");
spans.removeClass("highlight");
let index = Math.floor(Math.random() * spans.length);
console.log(index, spans.length);
spans.eq(index).addClass("highlight");
}, 1500);
#highlight-list > span { border:1px solid rebeccapurple; }
.highlight { color: white; background-color: rebeccapurple; }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="highlight-list">XXX - YYY - ZZZ</div>
我使用 jquery 只是为了方便起见,正如您在问题中标记的那样。您通常不应该像这样混合 vanilla-js / jquery,但我不想对您的原始内容进行太多更改。
一些注意事项:
.map
分隔符,则使用
.join(" - ")
然后使用
-