Note that there are some explanatory texts on larger screens.

plurals
  1. POJavascript function on multiple elements at one page?
    primarykey
    data
    text
    <p>Could you please help me to figure out this situation? On my page I'm using Javascript which dynamically generates random RGB color, which is being applied to multiple elements on the page.</p> <p>Here is Javascript itself:</p> <pre><code>function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))&gt;0&amp;&amp;parent.frames.length) { d=parent.frames[n.substring(p+10)].document; n=n.substring(0,p);} if(!(x=d[n])&amp;&amp;d.all) x=d.all[n]; for (i=0;!x&amp;&amp;i&lt;d.forms.length;i++) x=d.forms[i][n]; for(i=0;!x&amp;&amp;d.layers&amp;&amp;i&lt;d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); if(!x &amp;&amp; d.getElementById) x=d.getElementById(n); return x; } function MM_changeProp(objName,x,theProp,theValue) { //v6.0 var obj = MM_findObj(objName); if (obj &amp;&amp; (theProp.indexOf("style.")==-1 || obj.style)){ if (theValue == true || theValue == false) eval("obj."+theProp+"="+theValue); else eval("obj."+theProp+"='"+theValue+"'"); } } // get random RGB values so we can change background and link colors var r = Math.floor(Math.random()*241); var g = Math.floor(Math.random()*241); var b = Math.floor(Math.random()*241); // variables to hold the lighter shade RGB values var rp1, gp1, bp1, rp2, gp2, bp2, rp3, gp3, bp3; //we'll use these values to calculate lighter shades var p1 = .1; var p2 = .15; var p3 = .2; getLighterRGBShades(); // get random intervals used to calculate the changing RGB values var ri = Math.floor(Math.random()*4); var gi = Math.floor(Math.random()*4); var bi = Math.floor(Math.random()*4); // This changes the color function randomcolor() { if (r&gt;239||r&lt;1) ri=ri*-1; if (g&gt;239||g&lt;1) gi=gi*-1; if (b&gt;239||b&lt;1) bi=bi*-1; r+=ri; g+=gi; b+=bi; MM_changeProp('random','','style.color','rgb('+r+', '+g+', '+b+')'); getLighterRGBShades(); setTimeout('randomcolor()',100); } function getLighterRGBShades() { rp1=parseInt((r*p1)+(255-(255*p1))); gp1=parseInt((g*p1)+(255-(255*p1))); bp1=parseInt((b*p1)+(255-(255*p1))); rp2=parseInt((r*p2)+(255-(255*p2))); gp2=parseInt((g*p2)+(255-(255*p2))); bp2=parseInt((b*p2)+(255-(255*p2))); rp3=parseInt((r*p3)+(255-(255*p3))); gp3=parseInt((g*p3)+(255-(255*p3))); bp3=parseInt((b*p3)+(255-(255*p3))); } </code></pre> <p>Everything works fine, but the problem is that I can't use one function (in this case called <strong>randomcolor()</strong>) for several times on my page (applying objName as Id in HTML for different elements). In HTML this will look as follows:</p> <pre><code>&lt;html&gt; &lt;head&gt; &lt;/head&gt; &lt;body onLoad="randomcolor()&gt; ... &lt;a href="#1" id="random"&gt;Link#1&lt;/a&gt; ... &lt;a href="#2" id="random"&gt;Link#2&lt;/a&gt; ... &lt;a href="#3" id="random"&gt;Link#3&lt;/a&gt; ... &lt;/body&gt; &lt;/html&gt; </code></pre> <p>It will work fine only for for the first element from the top, in this case Link#1, but not for the following ones. Any ideas?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload