• Login
  • Register
  • Zoek
This Thread
  • Everywhere
  • This Thread
  • This Forum
  • Articles
  • Pages
  • Forum
  • Filebase Entry
  • More Options

ICTscripters

Dé plek voor IT

Dé plek voor IT

Login

Geavanceerde opties
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Home
  2. Forum
    1. Alle berichten
    2. Recente activiteiten
  3. ICT Nieuws
  4. Blog
  5. Marktplaats
    1. Werk
    2. Advertenties
    3. Domeinnamen
    4. Websites
    5. Design & lay-outs
    6. Scripts
    7. Overige
  6. Design
  7. Leden
    1. Actieve bezoekers
    2. Team
    3. Leden zoeken
  8. Downloads
  9. Goedkope domeinnamen
  1. Dé plek voor IT - ICTscripters
  2. Forum
  3. Scripting & programmeren
  4. Javascript + Ajax

Forum

  • Na 15 jaar terug van weggeweest: iCriminals.nl is terug (BETA)!

    Syntax 30 december 2025 om 22:29
  • Developer Gezocht

    K.Rens 30 december 2025 om 12:32
  • Op zoek naar de legends

    Jeffrey.Hoekman 9 december 2025 om 09:41
  • [FREE] WeFact Hosting module

    Jeroen.G 13 oktober 2025 om 14:09
  • Help testers nodig voor android app Urgent

    urgentotservices 26 september 2025 om 10:21
  • Versio vervanger

    Jeroen.G 25 augustus 2025 om 15:56
  • Afspraken systeem met planbeperking

    Lijno 1 augustus 2025 om 23:04
  • Partner Gezocht om meerdere NFT Collecties op Open Sea te Plaatsen

    NFT Art Designer 1 maart 2025 om 14:08

Marktplaats

  • Meerdere mafia game template te koop

    Syntax 28 december 2025 om 21:20
  • Van een pixelige afbeelding naar een strakke, moderne website

    Syntax 21 december 2025 om 17:05
  • 302 Nieuwe Domeinnamen November 2025

    shiga 1 december 2025 om 13:07

Bewegende regenboog kleur text

  • djordyh
  • 15 augustus 2016 om 13:50
  • djordyh
    Professional
    Berichten
    627
    • 15 augustus 2016 om 13:50
    • #1

    Hallo,

    Ik wil dus een bewegende regenboog kleur text toevoegen op mijn forum. Het probleem is echter dat het scriptje wat ik gebruik, met ID's werkt, en dat is dus niet optimaal gezien meerdere users de regenboog kleur text krijgen, en gezien hun meerdere keren op één pagina gezien zullen worden.

    Heb veel gekloot met het scriptje maar het is toch iets lastiger als ik gehoopt had (mijn javascript is belabberd).

    Dit is de functie wat de regenboog kleur maakt:

    JavaScript
    <script type="text/javascript">
    <!-- Begin
    /* This script and many more are available free online at
    The JavaScript Source!! http://javascript.internet.com
    Created by: HaganeNoKokoro :: http://tinyurl.com/buvp9 */
    
    
    /*
     * Notes on hue
     *
     * This script uses hue rotation in the following manner:
     * hue=0   is red (#FF0000)
     * hue=60  is yellow (#FFFF00)
     * hue=120 is green (#00FF00)
     * hue=180 is cyan (#00FFFF)
     * hue=240 is blue (#0000FF)
     * hue=300 is magenta (#FF00FF)
     * hue=360 is hue=0 (#FF0000)
     *
     * Notes on the script
     *
     * This script should function in any browser that supports document.getElementById
     * It has been tested in Netscape7, Mozilla Firefox 1.0, and Internet Explorer 6
     *
     * Accessibility
     *
     * The script does not write the string out, but rather takes it from an existing
     * HTML element. Therefore, users with javascript disabled will not be adverely affected.
     * They just won't get the pretty colors.
     */
    
    
    /*
     * splits par.firstChild.data into 1 span for each letter
     * ARGUMENTS
     *   span - HTML element containing a text node as the only element
     */
    function toSpans(span) {
      var str=span.firstChild.data;
      var a=str.length;
      span.removeChild(span.firstChild);
      for(var i=0; i<a; i++) {
        var theSpan=document.createElement("SPAN");
        theSpan.appendChild(document.createTextNode(str.charAt(i)));
        span.appendChild(theSpan);
      }
    }
    
    
    /*
     * creates a rainbowspan object
     * whose letters will be colored [deg] degrees of hue
     * ARGUMENTS
     *   span - HTML element to apply the effect to (text only, no HTML)
     *   hue - what degree of hue to start at (0-359)
     *   deg - how many hue degrees should be traversed from beginning to end of the string (360 => once around, 720 => twice, etc)
     *   brt - brightness (0-255, 0 => black, 255 => full color)
     *   spd - how many ms between moveRainbow calls (less => faster)
     *   hspd - how many hue degrees to move every time moveRainbow is called (0-359, closer to 180 => faster)
     */
    function RainbowSpan(span, hue, deg, brt, spd, hspd) {
        this.deg=(deg==null?360:Math.abs(deg));
        this.hue=(hue==null?0:Math.abs(hue)%360);
        this.hspd=(hspd==null?3:Math.abs(hspd)%360);
        this.length=span.firstChild.data.length;
        this.span=span;
        this.speed=(spd==null?50:Math.abs(spd));
        this.hInc=this.deg/this.length;
        this.brt=(brt==null?255:Math.abs(brt)%256);
        this.timer=null;
        toSpans(span);
        this.moveRainbow();
    }
    
    
    /*
     * sets the colors of the children of [this] as a hue-rotating rainbow starting at this.hue;
     * requires something to manage ch externally
     * I had to make the RainbowSpan class because M$IE wouldn't let me attach this prototype to [Object]
     */
    RainbowSpan.prototype.moveRainbow = function() {
      if(this.hue>359) this.hue-=360;
      var color;
      var b=this.brt;
      var a=this.length;
      var h=this.hue;
    
    
      for(var i=0; i<a; i++) {
    
    
        if(h>359) h-=360;
    
    
        if(h<60) { color=Math.floor(((h)/60)*b); red=b;grn=color;blu=0; }
        else if(h<120) { color=Math.floor(((h-60)/60)*b); red=b-color;grn=b;blu=0; }
        else if(h<180) { color=Math.floor(((h-120)/60)*b); red=0;grn=b;blu=color; }
        else if(h<240) { color=Math.floor(((h-180)/60)*b); red=0;grn=b-color;blu=b; }
        else if(h<300) { color=Math.floor(((h-240)/60)*b); red=color;grn=0;blu=b; }
        else { color=Math.floor(((h-300)/60)*b); red=b;grn=0;blu=b-color; }
    
    
        h+=this.hInc;
    
    
        this.span.childNodes[i].style.color="rgb("+red+", "+grn+", "+blu+")";
      }
      this.hue+=this.hspd;
    }
    // End -->
    </script>
    Toon Meer


    En dit is het stukje wat de tekst oproept:

    Code
    <script type="text/javascript">
    var r1=document.getElementById("r1"); //get span to apply rainbow
    var myRainbowSpan=new RainbowSpan(r1, 0, 360, 255, 50, 18); //apply static rainbow effect
    myRainbowSpan.timer=window.setInterval("myRainbowSpan.moveRainbow()", myRainbowSpan.speed);
    </script>

    Ik heb dingen geprobeerd als:

    JavaScript
    var x = document.getElementsByClassName("rainbow");
    for (var i = 0; i < x.length; i++) 
    {
        var myRainbowSpan=new RainbowSpan(x[i], 0, 360, 255, 50, 18); //apply static rainbow effect
        myRainbowSpan.timer=window.setInterval("myRainbowSpan.moveRainbow()", myRainbowSpan.speed);
    }

    Maar dat werkte allemaal niet.

    Zou iemand mij willen helpen? Alvast bedankt!

    Met vriendelijke groet,

    Djordy.

  • Dees
    Elite members
    Ontvangen Reacties
    64
    Articles
    1
    Berichten
    358
    • 15 augustus 2016 om 14:19
    • #2

    De bedoeling is dat die om de X aantal seconden een nieuwe kleur krijgt?

    Met vriendelijke groet,

    Dees

  • djordyh
    Professional
    Berichten
    627
    • 15 augustus 2016 om 14:28
    • #3
    Citaat van D.Oomens

    De bedoeling is dat die om de X aantal seconden een nieuwe kleur krijgt?

    Yep, je moet het zien als DEZETEKST dan in regenboog kleur en dat verschuift naar links (dus de kleuren scrollen). Dat gebeurd eigenlijk echt op de MS. Het werkt prima, alleen dit is ID based en ik gebruik het meer als 1x.

    Met vriendelijke groet,

    Djordy.

  • Dees
    Elite members
    Ontvangen Reacties
    64
    Articles
    1
    Berichten
    358
    • 15 augustus 2016 om 14:41
    • #4

    Ik heb dit snel voor je in elkaar gekunsteld, maar dat bedoel je niet.

    Met vriendelijke groet,

    Dees

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 15 augustus 2016 om 15:12
    • #5

    En als je nu een mechanisme hebt/verzint waarbij je unieke id's genereert, dan kun je je regenboogcode blijven gebruiken zoals voorheen omdat je dan niets aan functionaliteit hoeft te wijzigen.

    Je zegt dat je dit gebruikt op een forum, heb je daar UBB-code of wat dan ook? De oplossing hangt voor een groot deel af van hoe iemand passages tekst kan markeren voor regenboog-opmaak. Dit bepaalt namelijk in een grote mate je oplossingsrichting.

    Mijn eerste vraag zou dan ook zijn: hoe markeer je tekst voor deze opmaak?

  • djordyh
    Professional
    Berichten
    627
    • 15 augustus 2016 om 15:31
    • #6
    Citaat van D.Oomens

    Ik heb dit snel voor je in elkaar gekunsteld, maar dat bedoel je niet.

    Ziet er wel leuk uit, zal je een voorbeeldje plaatsen later vandaag (of je moet even zelf de code in een html bestand gooien met een span met als ID r1.) Kan op het moment even niets doen.

    Citaat van FangorN

    En als je nu een mechanisme hebt/verzint waarbij je unieke id's genereert, dan kun je je regenboogcode blijven gebruiken zoals voorheen omdat je dan niets aan functionaliteit hoeft te wijzigen.

    Je zegt dat je dit gebruikt op een forum, heb je daar UBB-code of wat dan ook? De oplossing hangt voor een groot deel af van hoe iemand passages tekst kan markeren voor regenboog-opmaak. Dit bepaalt namelijk in een grote mate je oplossingsrichting.

    Mijn eerste vraag zou dan ook zijn: hoe markeer je tekst voor deze opmaak?

    Dat gaat hem helaas niet worden. De code wordt gebruikt om een gebruikersnaam te markeren, ik kan dan een begin en een end prefix meegeven. Dat is dan prefix accountname prefix. Wat ik daar dus doet nu is <span id="r1"> als begin prefix en </span> als end prefix.
    Het wordt dus geen ubb code, en het is helaas ook niet iets wat ik zomaar kan aanpassen in het forum software.

    Het makkelijkste leek mij om de javascript aan te passen, maar dat viel mij helaas wat tegen. Alhoewel ik wel in de goede richting kwam, denk ik.

    Met vriendelijke groet,

    Djordy.

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 15 augustus 2016 om 15:46
    • #7

    Laat ik het anders verwoorden: wat is/zijn de conditie(s) voor het toevoegen van die span? En waar regel je dat dit specifiek "r1" moet zijn? Komt hier een scriptingtaal aan te pas? Regel je dit rechtstreeks in een template/in HTML?

    Je hebt het over een markeren van een gebruikersnaam? Een specifieke? Alle?

    Je zou al die delen die met een regenboog opgemaakt moeten worden (als dit vantevoren al op een of andere manier vastligt) kunnen voorzien van een class X. Vervolgens voeg je een snippet JavaScript toe die alle spans met class X afloopt en deze voorziet van een uniek id waar je vervolgens de regenboog-functionaliteit aan koppelt. Je maakt dus via een tussenstap een koppelstuk zodat je deze delen aan de regenboog-code kunt klikken zonder dat je hiervoor de regenboog-code inhoudelijk hoeft aan te passen.

    Het implementeren van dit principe wordt wel lastig als je niet uitlegt hoe dit proces verloopt of wanneer je zelf niets/heel weinig kunt schuiven in de forumcode.

  • djordyh
    Professional
    Berichten
    627
    • 15 augustus 2016 om 15:54
    • #8
    Citaat van FangorN

    Laat ik het anders verwoorden: wat is/zijn de conditie(s) voor het toevoegen van die span? En waar regel je dat dit specifiek "r1" moet zijn? Komt hier een scriptingtaal aan te pas? Regel je dit rechtstreeks in een template/in HTML?

    Je hebt het over een markeren van een gebruikersnaam? Een specifieke? Alle?

    Je zou al die delen die met een regenboog opgemaakt moeten worden (als dit vantevoren al op een of andere manier vastligt) kunnen voorzien van een class X. Vervolgens voeg je een snippet JavaScript toe die alle spans met class X afloopt en deze voorziet van een uniek id waar je vervolgens de regenboog-functionaliteit aan koppelt. Je maakt dus via een tussenstap een koppelstuk zodat je deze delen aan de regenboog-code kunt klikken zonder dat je hiervoor de regenboog-code inhoudelijk hoeft aan te passen.

    Het implementeren van dit principe wordt wel lastig als je niet uitlegt hoe dit proces verloopt of wanneer je zelf niets/heel weinig kunt schuiven in de forumcode.

    Daar zitten geen condities aan. Leden zitten allemaal in een bepaalde user-group (admins, moderator, member etc). Ik kan die user-groups van alles meegeven, in de vorm van een begin en een end prefix. Wat ik daar neerzet, ben ik vrij in. De prefix van de member group die ik als regenboog wilt hebben, is dus <span id="r1">.

    Vervolgens heb ik dat stukje javascript in de template gezet van het forum, zoals het moest. Alleen dat scriptje is dus gebaseerd op maar 1 tekst als regenboog, dus werkt het script met IDs. Ik heb mijzelf nu dus in het regenboog groep gezet, en ik kom 4x voor op een pagina. De eerste keer werkt het en heb ik het bewegende regenboog kleur effect, de andere 3 keren wordt ik ook als regenboog gekleurd, maar is de animatie weg. Dat komt doordat de javascript er maar 1 pakt.

    Wat ik dus zoek is, hoe kan dit scriptje zo aangepast worden dat het alle spans pakt met een class "rainbow" of name "rainbow" ipv dat het achter ID's aangaat.

    Met vriendelijke groet,

    Djordy.

  • MOnkNL
    Student
    Ontvangen Reacties
    8
    Berichten
    69
    • 15 augustus 2016 om 16:42
    • #9

    @FangorN
    What he said.

    Belangrijkste wat je moet kunnen doen is een class toevoegen. (ID dienen uniek te zijn dus lijkt me zoiezo dat ze niet alemaal r1 zijn.) Mochten ze opvolgend zijn dus r1,r2,r3. En alleen daar worden gebruiken zo je dit ook kunnen lezen met javascript.


    Op basis van jqueryL

    JavaScript
    function findusers(){
    	#amoutofuser = $('.user').length;
    	if(amoutofheaders > 1){
    		$('body').find('.user').each(function(index, element) {
                $(element).attr('id','user_'+index);
            });
    	}
    }


    Of op javascript basis:


    JavaScript
    function findusers() {
       var users =  document.querySelectorAll(".user");
       for (var i = 0; i < users.length; i++)
           users[i].id = 'user_' + i;
       }
    }

    Dan kan je aan de hand van de length van de gevonden elementen de rainbow starten in een for loop.

    The law is what I write down on paper

  • djordyh
    Professional
    Berichten
    627
    • 15 augustus 2016 om 18:09
    • #10

    Het is dus niet mogelijk om dat scriptje om te bouwen naar class/name gebruik ipv id? Bovenstaande oplossing kan ik gebruiken maar zit nu al aan 7k users dus dat wordt wel een flinke load.

    Met vriendelijke groet,

    Djordy.

  • MOnkNL
    Student
    Ontvangen Reacties
    8
    Berichten
    69
    • 15 augustus 2016 om 18:46
    • #11

    Je gaat natuurlijk ook de elementen van je code aanpassen op moment klaar ben met laden. Ik weet niet of er een css animation oplossing voor is, lijkt me wel dus misschien moet je daar even op Google.

    Edit: https://codepen.io/beben-koben/pen/gfuvc deze doet alleen meteen de gehele tekst. Dus of je verbouwt de html zo dat je er een delay in zet voor de animatie.

    The law is what I write down on paper

  • FangorN
    Professional
    Ontvangen Reacties
    196
    Articles
    2
    Berichten
    737
    • 16 augustus 2016 om 14:27
    • #12

    Ok, ik heb hier nog even langer dan goed voor mij is naar gekeken en heb het nu aan de praat.

    Allereerst wat observaties:

    • firstChild.data retourneert "undefined", dit kun je oplossen door voorkomens (2x) van firstChild.data te vervangen door firstChild.innerHTML
    • de regenboog functionaliteit verwacht een element met een id om het element wat de regenboog functionaliteit moet hebben heen anders wordt de "span" (nogal misleidende naam) niet gevonden
    • omdat je nu potentieel meerdere regenbogen hebt is het handig om alle voorkomens op te slaan in een array, te meer omdat deze ook allemaal aparte timers hebben

    Om dit aan de praat te krijgen moet je het volgende doen:

    1. Zoals aangegeven, vervang de voorkomens (2x) van firstChild.data door firstChild.innerHTML
    2. Schrijf wat extra code die het gebruik van meerdere regenbogen mogelijk maakt, bijvoorbeeld als volgt (met gebruikmaking van jQuery):
    JavaScript
    $().ready(function() {
        var rainbows = [];
        function createRainbow(element, id) {
            $(element).wrap('<div id="'+id+'"></div>');
            rainbows[id] = new RainbowSpan(document.getElementById(id), 0, 360, 255, 50, 18);
            rainbows[id].timer = window.setInterval(function() {
                rainbows[id].moveRainbow();
            }, rainbows[id].speed);
        }
    
    
        $('.rainbow').each(function(index, element) {
            createRainbow(element, 'r'+index);
        });
    });
    Toon Meer

    Het bovenstaande is getest en werkt in FireFox, Chrome en IE Edge.

    Citaat van sukel

    Bovenstaande oplossing kan ik gebruiken maar zit nu al aan 7k users dus dat wordt wel een flinke load.

    Zie niet helemaal hoe dit relevant is want JavaScript = clientside, of ik moet je verkeerd begrijpen.

    EDIT: tijdelijk werkend voorbeeld

    Bewerkt één keer, laatst door FangorN (16 augustus 2016 om 14:33).

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!

Maak een account aan Login

ICT Nieuws

  • Fijne feestdagen

    tcbhome 28 december 2025 om 13:55
  • Kritieke update voor Really Simple Security-plug-in

    K.Rens 16 november 2024 om 16:12
  • ING Nederland streeft naar ondersteuning van Google Pay tegen eind februari

    K.Rens 2 november 2024 om 16:09

Blogs

  • Functioneel ontwerp

    Dees 28 december 2014 om 12:38
  • Access Control List implementatie in PHP/MySQL - deel 1/2

    FangorN 28 december 2018 om 12:35
  • Access Control List implementatie in PHP/MySQL - deel 2/2

    FangorN 29 december 2018 om 12:37

Gebruikers die dit topic bekijken

  • 1 Gasten
  1. Marktplaats
  2. Design
  3. Voorwaarden
  4. Ons team
  5. Leden
  6. Geschiedenis
  7. Regels
  8. Links
  9. Privacy Policy
ICTscripters ©2005 - 2026 , goedkope hosting door DiMoWeb.com, BE0558.915.582
Sponsors: Beste kattenhotel provincie Antwerpen | Beste Zetes eid kaartlezer webshop
Style: Nexus by cls-design
Stylename
Nexus
Manufacturer
cls-design
Licence
Commercial styles
Help
Supportforum
Visit cls-design