2

我正在尝试创建一个简单的 javascript 脚本,该脚本会以每 500 毫秒闪烁不同颜色的文本。我想到了这样的东西,但它不起作用,它只是以一种颜色(绿色、黑色或红色三种颜色之一)打印出文本。谢谢你的帮助

<html>
<body >
<script>

var f = function() { 
var str = "Hello World";;
var d = new Date();
var n = d.getTime();
switch(n%3)
  {
  case 1:
  fontcolor="green"
  break;
  case 2:
  fontcolor="black"
  break;
  default:
  fontcolor="red"
  }
document.write(str.fontcolor(fontcolor));   
 }
setInterval(f, 500);     
</script>
</body>
</html>
4

2 回答 2

2

尝试这样的事情(请参阅评论以了解发生了什么):

// Wait until the document is ready

window.onload = function()
{
    // Create the element

    var txt = document.createElement('span');

    txt.innerHTML = 'Hello World!';

    // Insert the element to the document

    document.body.appendChild(txt);

    // Alternate the colors

    var colors  = [ 'red', 'green', 'blue', 'black', 'yellow', 'pink' ];
    var current = 0;

    setInterval(function()
    {
        // Update element's style with the new color

        txt.style.color = colors[current];

        // Go to the next color

        current = (current + 1) % colors.length;

    }, 500);
};
于 2013-03-28T23:18:34.403 回答
0

我刚刚在小提琴中运行它,它似乎工作。看起来每 500 毫秒发生一次,因此计算机上每次调用之间的时间可能实际上是 501 毫秒(或其他 3 的除数),或其他 3 的除数。你为什么不尝试聚合计数器,最初为 0,然后每次添加 d.getTime() % 1000,然后具有该值 % 3。

var a = 0;
var f = function() { 
    var str = "Hello World";;
    var d = new Date();
    var n = d.getTime();
    a = a + (n % 1000);
    switch(a % 3) {
        case 1:
            fontcolor="green"
            break;
        case 2:
            fontcolor="black"
            break;
        default:
            fontcolor="red"
    }
    document.write(str.fontcolor(fontcolor));
}
setInterval(f, 500);
于 2013-03-28T22:57:21.753 回答