javascript - 如何更改数组中最后一个元素的颜色 - js
问题描述
我的以下代码有问题:
let textPos = document.getElementById('js-headline');
let i = 0;
function typewriter() {
let letters = ['C', 'o', 'd', 'e', 'X'];
if (i < letters.length) {
textPos.innerText += letters[i];
i++;
setTimeout(typewriter, 1000);
} else if (i == letters.length) {
let lastLetter = letters[letters.length - 1];
lastLetter.style.color = 'red';
}
}
typewriter();
在我的“else if”中,我选择了数组的最后一个元素,我想更改颜色,但它不起作用 - 我收到一条错误消息
“未捕获的类型错误:无法设置未定义的属性(设置'颜色')”。
有一件事很疯狂,我可以将这个数组的最后一个元素放在警报框或 console.log 中,它会显示最后一个元素......
解决方案
您正在尝试设置.style.color
字符串的属性,这是不可能的。您需要制作一个<span>
能够更改颜色的元素,并添加<span>
而不是字母本身。
此外,您查找最后一个元素的条件是错误的,所以我也修复了它。
let textPos = document.getElementById("js-headline");
let i = 0;
function typewriter() {
let letters = ["C", "o", "d", "e", "X"];
if(i < letters.length - 1) {
textPos.innerText += letters[i];
i++;
setTimeout(typewriter, 1000);
}
else {
let lastLetter = letters[letters.length - 1];
let span = document.createElement("span");
span.innerText = lastLetter;
span.style.color = "red";
textPos.appendChild(span);
}
}
typewriter();
<h1 id="js-headline"></h1>
推荐阅读
- r - 如何在最小元素上写条件?
- node.js - 使用 findById 方法时,我应该怎么做才能摆脱猫鼬的 Cast 错误
- spring-boot - Spring Security Authorization Server (experimental) - 示例项目,从 Gradle 到 Maven (Dependencies)
- xcode - 在 10 多个视图之间滑动
- android - 如果firebase没有身份验证,如何限制API密钥?
- python - 如何使用 Pyside 实现交互式 QAction?(即如何在 QAction 中捕获事件?)
- python - 我想使用 for 循环以有组织的名称格式绘制多个文件的数据
- php - 什么会导致 PHP 表单 AddRecipient 出现错误 500?
- git - 无法使用 git clean -xdff 删除“.git”
- python - 使用 Selenium (Python) 自动登录