javascript - 在两个颜色范围之间多次更改文本颜色

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript - 在两个颜色范围之间多次更改文本颜色相关的知识,希望对你有一定的参考价值。

我想知道是否有人可以帮助我多次改变文本的颜色然后将颜色#627CA9形成为#FFFFFF,反之亦然。

我试过这个:

function changeColor(id) {
  var x = document.getElementById(id);
  if (document.getElementById(id).style.color = "#627CA9")
    document.getElementById(id).style.color = "#FFFFFF"
  else {
    document.getElementById(id).style.color = "#627CA9"; // forecolor
  }

}
<div style="cursor: pointer;" onclick="changeColor('myid1'); return false;" id="myid1" class="centered">CHVRCHES</div>
<div style="cursor: pointer;" onclick="changeColor('myid2'); return false;" id="myid2" class="centered">PVRIS</div>

代码仅更改颜色1次。

(对不起,我的英文)

谢谢

答案

除了您使用“=”指定颜色而不是使用“==”进行检查之外,颜色也被设置为RGB。对此进行检查似乎有效;

function changeColor(id) {
  var x = document.getElementById(id);
  
  if (x.style.color != "rgb(255, 255, 255)")
    x.style.color = "#FFFFFF";
  else {
    x.style.color = "#627CA9"; // forecolor
  }

}
<div style="cursor: pointer;" onclick="changeColor('myid1'); return false;" id="myid1" class="centered">CHVRCHES</div>
<div style="cursor: pointer;" onclick="changeColor('myid2'); return false;" id="myid2" class="centered">PVRIS</div>
另一答案

问题是document.getElementById(id).style.color = "#627CA9"将其更改为document.getElementById(id).style.color == "#627CA9",还应该使用类并更改类的名称

function changeColor(id) {
  var x = document.getElementById(id);
  if (x.className === "white") x.className = "";
  else x.className = "white";
}
div {
  color: #627CA9;
}

.white {
  color: #FFFFFF;
}
<div style="cursor: pointer;" onclick="changeColor('myid1'); return false;" id="myid1" class="centered">CHVRCHES</div>
<div style="cursor: pointer;" onclick="changeColor('myid2'); return false;" id="myid2" class="centered">PVRIS</div>
另一答案

您需要比较值,而不是分配它们。在条件下放两个等号。

if (document.getElementById(id).style.color == "#627CA9")

UPD:此外,通常在使用javascript设置颜色时,它会转换为RGB,因此无法再与HEX进行进一步比较。您将不得不比较和设置RGB中的值,但这不是一个好习惯。最好的解决方案是创建一个额外的类并通过CSS设置样式,这将允许您检查元素上是否存在类,并在此基础上删除或添加此类。

以上是关于javascript - 在两个颜色范围之间多次更改文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

检测两个物体之间的碰撞发生多次转化

ggplot 将颜色渐变缩放到数据范围之外

PHP - 在两个静态数字之间创建一组数字范围

什么是堆叠双轴图?

Javascript(Ionic)中两个移动设备之间的距离

使用范围滑块通过 javascript 更改 HSL 背景颜色