Javascript函数在一个页面的多个元素上运行?

Javascript函数在一个页面的多个元素上运行?,javascript,html,function,Javascript,Html,Function,你能帮我弄清楚这个情况吗? 在我的页面上,我使用Javascript动态生成随机RGB颜色,该颜色应用于页面上的多个元素 下面是Javascript本身: function MM_findObj(n, d) { //v4.01 var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) { d=parent.frames[n.substring(p+10)].document;

你能帮我弄清楚这个情况吗? 在我的页面上,我使用Javascript动态生成随机RGB颜色,该颜色应用于页面上的多个元素

下面是Javascript本身:

function MM_findObj(n, d) { //v4.01
var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+10)].document; n=n.substring(0,p);}
if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_changeProp(objName,x,theProp,theValue) { //v6.0
var obj = MM_findObj(objName);
if (obj && (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>239||r<1) ri=ri*-1;
if (g>239||g<1) gi=gi*-1;
if (b>239||b<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)));
}
函数MM_findObj(n,d){//v4.01 变量p,i,x;如果(!d)d=document;如果((p=n.indexOf(“?”)>0&&parent.frames.length){ d=parent.frames[n.substring(p+10)].document;n=n.substring(0,p);}
如果(!(x=d[n])&d.all)x=d.all[n];对于(i=0;!x&&iid是唯一的;不能有多个元素的id是随机的。请改用class。

eval
document.layers
?你是认真的吗?我们是不是突然回到1995年了?将id改为class,这将感谢你的答案!这可能是原因之一!但是,我刚刚试着这么做并取消了幸运的是,使用类而不是id脚本根本不起作用。也许解决方案就在Javascript本身的某个地方?是的,您需要更改脚本,因为它仍然使用getElementById。我建议您研究jQuery,在那里您可以用
$('.random')
var arrays = document.body.getElementsByTagName('A');
for(var i = 0; i < arrays.length; i ++) {
    var elem = arrays[i];
    if(elem.id == 'random') {
        elem.style.color = 'rgb('+r+', '+g+', '+b+')';
    }
}
var arrays = document.body.getElementsByTagName('A');
for(var i = 0; i < arrays.length; i ++) {
    var elem = arrays[i];
    if(elem.id == 'random') {
        elem.style.color = 'rgb('+r+', '+g+', '+b+')';
    }
}
$('.random').css('color', 'rgb('+r+', '+g+', '+b+')');