make it random. |
![]() ![]() |
make it random. |
Feb 13 2006, 11:14 AM
Post
#1
|
|
|
Ill get around to doing that.... ![]() ![]() ![]() ![]() ![]() Group: Member Posts: 518 Joined: Oct 2005 Member No: 275,913 |
Does anyone know how to make a javascript random??????
|
|
|
|
| *mipadi* |
Feb 13 2006, 12:09 PM
Post
#2
|
|
Guest |
Random in what way? JavaScript can generate a random number with the Math.random() function.
Note: The number returned is not mathematically random, of course, but it's good enough to fool a human. |
|
|
|
Feb 13 2006, 02:59 PM
Post
#3
|
|
|
Ill get around to doing that.... ![]() ![]() ![]() ![]() ![]() Group: Member Posts: 518 Joined: Oct 2005 Member No: 275,913 |
here Ill post the code...............
|
|
|
|
| *mipadi* |
Feb 13 2006, 03:31 PM
Post
#4
|
|
Guest |
Well...I'm still not entirely sure what you're trying to make random, but I can make an attempt to parse the code. (JavaScript is not my area of expertise, but the syntax is familiar enough that I am fairly sure I know what's going on.)
CODE var mem=[]; This is declaring an array called mem. The array is empty. CODE mem[mem.length]=["Anime feak","http://s15.invisionfree.com/Animeupgrade/index.php?showuser=15"] mem[mem.length]=["Lottery","http://s15.invisionfree.com/Animeupgrade/index.php?showuser=18"] mem[mem.length]=["Raze","http://s15.invisionfree.com/Animeupgrade/index.php?showuser=26"] This is setting the index of the length of mem to a value--another array, to be exact, making mem a two-dimensional array (as far as I can tell). It seems to be setting the same index to a value...hrm... CODE var fdiv=document.getElementsByTagName("div") This gets an array of all the DIV's in a webpage and stores it in fdiv. CODE for(a=0;a<fdiv.length;a++) { FakeStaff=''; if(fdiv[a].className=="maintitle" && fdiv[a].innerHTML.match("Board Statistics")) { var UsersOnline=fdiv[parseInt(a)+1] for(c=0;c<mem.length;c++) { UsersOnline.innerHTML+=', <a href="'+mem[c][1]+'">'+mem[c][0]+'</a>' } } } This steps through every DIV element on the page. If the DIV is called "maintitle" and it is within an HTML element called "Board Statistics", then the number of users online is stored in the variable usersOnline. Then, the inner for loop steps through every entry in mem and adds on a link with a specified label (from the array mem. CODE var ftd=document.getElementsByTagName("td") Gets an array of every TD element on a page and stores it in the variable ftd. CODE for(a=0;a<ftd.length;a++) { if(ftd[a].className=="pformstrip" && ftd[a].innerHTML.match("active in the past")) { var td=ftd[parseInt(a)+2] var beforeMemNum=td.innerHTML.split("guests, <B>")[0]+"guests, <b>" var afterMemNum='</b> members,'+td.innerHTML.split("</B> members,")[1] var MemNum=parseInt(td.innerHTML.split("guests, <B>")[1].split("</B> members,")[0])+parseInt(mem.length) var nMemCount=beforeMemNum+MemNum+afterMemNum td.innerHTML=nMemCount } } This steps through every TD element on the page. If the TD is named "pformstrip" and is within an element specified by "active in the past", then some information is pulled out of ftd and stored in the variable td. The information is then parsed to get some sort of count. Now, what precisely are you trying to randomize? |
|
|
|
Feb 13 2006, 04:26 PM
Post
#5
|
|
|
Ill get around to doing that.... ![]() ![]() ![]() ![]() ![]() Group: Member Posts: 518 Joined: Oct 2005 Member No: 275,913 |
ummm. Ok so I akm trying to randomize the different members....
here I am better at example the site here at the bottom it shows different members ( 3 of these being ones that are put in through this code). I am trying to make it randomize so somtimes when you click 2 members come one time and when you click later on it shopws a different two to 3 up for instance ( I am using A, B , C to represent members) A and B are on the first time you are on later when you go back on C and A are on. Later when you go back on A, B and C are on....... |
|
|
|
| *mipadi* |
Feb 13 2006, 04:42 PM
Post
#6
|
|
Guest |
Okay. The first thing to do is populate the array, which is best done like this:
CODE var mem=[]; mem[0]=["Anime feak","http://s15.invisionfree.com/Animeupgrade/index.php?showuser=15"]; mem[1]=["Lottery","http://s15.invisionfree.com/Animeupgrade/index.php?showuser=18"]; mem[2]=["Raze","http://s15.invisionfree.com/Animeupgrade/index.php?showuser=26"]; This gives you a two-dimensional array with the values you desire. Now, you want to generate two or three users to display. This is a bit tough. I'd first generate a random number of entries using Math.random(): CODE var displayNumUsers = Math.floor(Math.random() * 3); if (displayNumUsers < 2) { count++; } That will give you a counter that will hold either the value 2 or 3. Now, just loop through and display the users. First, create a variable to hold the number of users displayed, then a variable to hold the users that have been displayed. CODE var count = 0; var users=[]; users[0] = -1; users[1] = -1; users[2] = -1; while (count <= displayNumUsers) { var user; var index; index = Math.floor(Math.random() * mem.length); while (index == users[0] || index == users[1] || index == users[2]) { index = Math.floor(Math.random() * mem.length); } user = mem[index]; //code for displaying user, using variable user count++; users[count - 1] = index; } Admittedly, this I hacked this code out pretty quick, so it's not optimized. I'm not an expert in JavaScript and I haven't tested this code, but I'm fairly confident it will work, or it can be fixed easily. |
|
|
|
Feb 13 2006, 04:54 PM
Post
#7
|
|
|
Ill get around to doing that.... ![]() ![]() ![]() ![]() ![]() Group: Member Posts: 518 Joined: Oct 2005 Member No: 275,913 |
ok I think you may have confused me a bit........
here is what I did..... Maybe I skrewed up but when I put it up it stops responding............ |
|
|
|
| *mipadi* |
Feb 13 2006, 04:58 PM
Post
#8
|
|
Guest |
Try this:
CODE var mem=[];
mem[0]=["Anime feak","http://s15.invisionfree.com/Animeupgrade/index.php?showuser=15"] mem[1]=["Lottery","http://s15.invisionfree.com/Animeupgrade/index.php?showuser=18"] mem[2]=["Raze","http://s15.invisionfree.com/Animeupgrade/index.php?showuser=26"] var displayNumUsers = Math.floor(Math.random() * 3); if (displayNumUsers < 2) { count++; } var count = 0; var users=[]; users[0] = -1; users[1] = -1; users[2] = -1; while (count <= displayNumUsers) { var user; var index; index = Math.floor(Math.random() * mem.length); while (index == users[0] || index == users[1] || index == users[2]) { index = Math.floor(Math.random() * mem.length); } user = mem[index]; var fdiv=document.getElementsByTagName("div") for(a=0;a<fdiv.length;a++) { FakeStaff=''; if(fdiv[a].className=="maintitle" && fdiv[a].innerHTML.match("Board Statistics")) { var UsersOnline=fdiv[parseInt(a)+1] for(c=0;c<mem.length;c++) { UsersOnline.innerHTML+=', <a href="'+user[1]+'">'+user[0]+'</a>' } } } var ftd=document.getElementsByTagName("td") for(a=0;a<ftd.length;a++) { if(ftd[a].className=="pformstrip" && ftd[a].innerHTML.match("active in the past")) { var td=ftd[parseInt(a)+2] var beforeMemNum=td.innerHTML.split("guests, <B>")[0]+"guests, <b>" var afterMemNum='</b> members,'+td.innerHTML.split("</B> members,")[1] var MemNum=parseInt(td.innerHTML.split("guests, <B>")[1].split("</B> members,")[0])+parseInt(mem.length) var nMemCount=beforeMemNum+MemNum+afterMemNum td.innerHTML=nMemCount } } count++; users[count - 1] = index; } |
|
|
|
Feb 13 2006, 05:04 PM
Post
#9
|
|
|
Ill get around to doing that.... ![]() ![]() ![]() ![]() ![]() Group: Member Posts: 518 Joined: Oct 2005 Member No: 275,913 |
Ok thanks I think the problem is that there are too many names because now when I go to my site all three of the names appear at the same time but they are random.. ( visit my site to see what I mean).......Thanks |
|
|
|
| *mipadi* |
Feb 13 2006, 08:03 PM
Post
#10
|
|
Guest |
I think it has something to do with the way the names are displayed. You might have to tweak that code; I didn't examine the structure of your board and just used what you had before, which may be wrong.
|
|
|
|
Feb 13 2006, 08:44 PM
Post
#11
|
|
|
Ill get around to doing that.... ![]() ![]() ![]() ![]() ![]() Group: Member Posts: 518 Joined: Oct 2005 Member No: 275,913 |
OK you have me confused. By tweaking do you mean editing numbers, and by structure you mean what???
|
|
|
|
| *mipadi* |
Feb 13 2006, 09:38 PM
Post
#12
|
|
Guest |
Well, the script does something dealing with the TD and DIV elements of the board, which I didn't examine very closely. The script may not be functioning properly because of the way certain elements are added and/or modified.
|
|
|
|
Feb 13 2006, 09:54 PM
Post
#13
|
|
|
Ill get around to doing that.... ![]() ![]() ![]() ![]() ![]() Group: Member Posts: 518 Joined: Oct 2005 Member No: 275,913 |
ok then so how would I find out if it is right or not?
|
|
|
|
| *mipadi* |
Feb 14 2006, 11:49 AM
Post
#14
|
|
Guest |
Output the values of the variables, run a few tests, find out exactly what the various loops and stuff are doing…
|
|
|
|
Feb 15 2006, 03:47 PM
Post
#15
|
|
|
Ill get around to doing that.... ![]() ![]() ![]() ![]() ![]() Group: Member Posts: 518 Joined: Oct 2005 Member No: 275,913 |
Ok I think I hae been through every number combination know to man......... but I have been thinking that maybe a display 1 code would work????
|
|
|
|
![]() ![]() |