MyBB Community Forums

Full Version: JS help
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hey all,

I have a javascript which can do the rainbow animated effect. However, it only works for the first time that the username is shown then show plain black text.

Example...
On the recent posts section, the first time "cyimking" is shown it will do the effect, but after that all the "cyimking"'s will show up black.

I have the script in my header..
Including the code you've used would probably help us help you...
<script type="text/javascript">
// <![CDATA[
var speed=125; // speed colours change, 1 second = 1000
var glow=3; // can be set from '0' for no glow, to 10
var raincol=new Array("#ff0000", "#ff5500", "#ffaa00", "#ffff00", "#aaff00", "#55ff00", "#00ff00", "#00ff55", "#00ffaa", "#00ffff", "#00aaff", "#0055ff", "#0000ff", "#5500ff", "#aa00ff", "#ff00ff", "#ff00aa", "#ff0055"); // change the colours if you want to
var alink=""; // page to link text to (set to ="" for no link)

/****************************
*    Rainbow Text Effect    *
*(c)2003-13 mf2fm web-design*
*  http://www.mf2fm.com/rv  *
* DON'T EDIT BELOW THIS BOX *
****************************/
var rainbow, raintxt, raincnt=0;

function addLoadEvent(funky) {
  var oldonload=window.onload;
  if (typeof(oldonload)!='function') window.onload=funky;
  else window.onload=function() {
    if (oldonload) oldonload();
    funky();
  }
}

addLoadEvent(regenbogen);

function regenbogen() { if (document.getElementById) {
  var i, rainbeau;
  rainbow=document.getElementById("rainbow_admin");
  raintxt=rainbow.firstChild.nodeValue;
  while (rainbow.childNodes.length) rainbow.removeChild(rainbow.childNodes[0]);
  for (i=0; i<raintxt.length; i++) {
    rainbeau=document.createElement("span");
    rainbeau.setAttribute("id", "rain"+i);
    rainbeau.appendChild(document.createTextNode(raintxt.charAt(i)));
    if (alink) {
      rainbeau.style.cursor="pointer";
      rainbeau.onclick=function() { top.location.href=alink; }
    }
    rainbow.appendChild(rainbeau);
  }
  rainbow=setInterval ("raining()", speed);
}}

function raining() {
  var i, c;
  for (i=0; i<raintxt.length; i++) {
    c=raincol[(i+raincnt)%raincol.length];
    document.getElementById("rain"+i).style.color=c;	
  }
  raincnt++;
}
// ]]>
</script>

It only does the effect once, then it doesn't do it anymore
As I though, you probably call it like <span id="rainbow_admin"> if I skim read the code correctly and you're missing this fact: http://stackoverflow.com/questions/56119...rent-types
The solution would be to modify JS code to use one of those methods: http://stackoverflow.com/questions/19336...javascript