彩虹滚动文字使用<span> </span>

时间:2014-07-19 17:07:58

标签: javascript html function button text

我想将一个小段变成彩虹文本,其中颜色使用JavaScript在无限循环中从右向左滚动。我目前有这一段:

<div id="rainbow">
  <p id="rtext">
    <span id="s1" style="color: red">H</span>
    <span id="s2" style="color: blue">e</span>
    <span id="s3" style="color: green">l</span>
    <span id="s4" style="color: purple">l</span>
    <span id="s5" style="color: orange">o</span>
    <span id="s6" style="color: magenta">!</span>
  </p>
</div>

<div id="actbtn">
    <button onclick="activ()">Click for RAINBOW!</button>
</div>`

我对JavaScript很新,所以我不知道如何编写activ()函数来无限滚动颜色。

编辑: 我要感谢Ben的循环脚本,但现在我还需要知道如何使用activ()函数来更改<span>元素的颜色。我试过以下脚本:     function activ() { document.getElementById("s1").style.color = 'magenta'; } 但颜色不会改变。我试图让脚本尽可能简单,但也让它工作。

最终编辑: 我使用了Ivan的“UPD Without JQuery”代码并添加了一些颜色,这就是我最终的结果:

<script>
function EyeVommit() {
    document.getElementById("actbtn").style.display = 'none';
    'use strict';
    var colors = ['red', 'blue', 'green', 'purple', 'orange', 'magenta', 'chartreuse', 'cyan', 'yellow'],
        target = document.getElementById('rtext').children,
        i,
        len = colors.length,
        inter = setInterval(function() {
            colors.unshift(colors.pop());
            for (i = 0; i < len; i++) {
                target[i].style.color = colors[i];
            }
        }, 200);
}
</script>
<div id="table1">
<p id="rtext"> <span id="s1">H</span><span id="s2">e</span><span id="s3">l</span><span  id="s4">l</span><span id="s5">o</span><span id="s6">!</span>

    <br />
    <div id="actbtn">
        <button onclick="EyeVommit()">Pabam!</button>
    </div>
</p>

The result.

3 个答案:

答案 0 :(得分:1)

我求你,永远,永远,永远不要在设计中使用它

<html>
    <head>
        <title>Price</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    </head>
    <body>
<script>
    function EyeVommit() {
        'use strict';
        var colors = ['red', 'blue', 'green', 'purple', 'orange', 'magenta'],
            $target = $('#rtext span'),
            counter,
            i,
            len = colors.length,
            inter;
            for (i = 0; i < len; i++) {
                $target[i] = $($target[i]);
            }
            inter = setInterval(function () {
                colors.unshift(colors.pop());
                for (i = 0; i < len; i++) {
                    $target[i].css('color', colors[i]);
                }
            }, 200);
    }
</script>
<div id="table1">
    <p id="rtext">
        <span id="s1">H</span>
        <span id="s2">e</span>
        <span id="s3">l</span>
        <span id="s4">l</span>
        <span id="s5">o</span>
        <span id="s6">!</span>
    </p>
</div>
<script>
EyeVommit();
</script>
    </body>
</html>

没有jQuery的UPD

<script>
    function EyeVommit() {
        'use strict';
        var colors = ['red', 'blue', 'green', 'purple', 'orange', 'magenta'],
            target = document.getElementById('rtext').children,
            i,
            len = colors.length,
            inter = setInterval(function () {
                colors.unshift(colors.pop());
                for (i = 0; i < len; i++) {
                    target[i].style.color = colors[i];
                }
            }, 200);
    }
</script>
<div id="table1">
    <p id="rtext">
        <span id="s1">H</span><span id="s2">e</span><span id="s3">l</span><span id="s4">l</span><span id="s5">o</span><span id="s6">!</span>
        <button onclick="EyeVommit()">Pabam!</button>
    </p>
</div>

答案 1 :(得分:0)

如果通过“无限滚动”意味着创建无限循环,则可以执行此操作。

function blaah(blaah){
//This is where you put all of your rainbow-y code

blaah("blaah");
}

然后你可以通过按钮调用该事件。

此代码有效,因为每次运行该函数时,都会再次调用它。 (函数的倒数第二行。)

答案 2 :(得分:0)

这是适用于您放入rtext块

的任何文本的文件

这是一个codepen:http://codepen.io/anon/pen/GtwxD

这是HTML

<div id="rainbow">
<p id="rtext">Hello! This is some rainbow text!</p>
</div>

<div id="actbtn">
<button>Click for RAINBOW!</button>
</div>

这是Javascript

$(document).ready(function(){
  createSpans();
  $('#actbtn').click(activ);

});

$rtxt = $('#rtext');
var text = $rtxt.html() , color;

function createSpans(){
  $rtxt.html(' ');
  window.colorCount = 0;
  window.on = false;
  colorPicker();
}

function activ(){
  if(!window.on){
        window.id = setInterval(colorPicker,100);
    window.on = true;
  }
  else{
    clearInterval(window.id);
    window.on = false;
  }
}

function colorPicker(){
  $rtxt.html(' ');
  window.colorCount++;
  for(var letter = 0; letter < text.length; letter++){
    switch ((letter + colorCount) % 6){
        case 0 : 
        color = "red";
        break;
      case 1 : 
        color = "orange";
        break;
      case 2:
        color = "green";
        break;
      case 3 :
        color = "purple";
        break;
      case 4 :
        color = "blue";
        break;
      case 5 :
        color = "gold";
        break;
      default : 
        color = "black";
        break;
    }
    $rtxt.append('<span style=" color:' + color + ';">' + text[letter] + '</span>');
  }
}