简体   繁体   English

第一次更改颜色后,轮廓颜色闪烁的JavaScript setInterval不起作用

[英]JavaScript setInterval for outline color flicker not working after first change of color

I'm trying to change the outline color of an H1 element every 2 seconds. 我正在尝试每2秒更改H1元素的轮廓颜色。 So I used this JavaScript code... But it only changes from yellow to orange once and stays at Orange the entire time. 因此,我使用了这段JavaScript代码...但是它只从黄色变为橙色一次,并一直保持在橙色状态。 What can I do to make it Flicker between the two colors? 如何使它在两种颜色之间闪烁? Please respond in JS terms and not JQuery Library 请以JS术语而不是JQuery库响应

Here is my JavaScript Code, I'm new to JS : 这是我的JavaScript代码,我是JS的新手:

var myVar = setInterval(function(){ colorFlicker() }, 2000);

function colorFlicker(){
    var y = document.getElementById("mainH1");
    y.style.outlineColor = y.style.outlineColor == "#ff944d" ? "#d9ff66": "#ff944d";
  }

Don't check for colors in javascript, the returned color depends on the browser, and is often in the format rgb(200,33,33) or rgba(244,22,244,1) or even hex in older browsers, use a flag instead 请勿检查javascript中的颜色,返回的颜色取决于浏览器,在旧版浏览器中通常为rgb(200,33,33)rgba(244,22,244,1)甚至十六进制格式,请使用标志代替

 var myVar = setInterval(colorFlicker, 500); var flag = true; function colorFlicker() { var y = document.getElementById("mainH1"); y.style.outlineColor = flag ? "#d9ff66" : "#ff944d"; flag = !flag; } 
 #mainH1 {outline: 2px solid #ff944d;} 
 <h1 id="mainH1">TEST</h1> 

Use rgb() for the default color then adapt your condition : 使用rgb()作为默认颜色,然后调整您的条件:

 var myVar = setInterval(colorFlicker, 1000); function colorFlicker() { var y = document.getElementById("mainH1"); y.style.outlineColor = y.style.outlineColor == "rgb(255, 148, 77)"?"#d9ff66":"rgb(255, 148, 77)"; } 
 h1 { outline-style: dotted; outline-color: rgb(255, 148, 77); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <h1 id='mainH1'>mainH1</h1> 

Style changes should be handled with CSS. 样式更改应使用CSS处理。 You can then use JavaScript to safely toggle a class that would attach the CSS style to your elements: 然后,您可以使用JavaScript安全地切换将CSS样式附加到元素的类:

/* css */
#mainH1 { outline: /* some color */ }
#mainH1.alternateColor { outline: /* some other color */ }

// JS
var y = document.getElementById("mainH1");
function colorFlicker(){
  y.classList.toggle('alternateColor');
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM