VITOCOMANGA Posted March 15, 2011 Report Share Posted March 15, 2011 (edited) Saludos estoy usando el siguiente código, para mostrar una cantidad x de enlaces aleatorios en una tabla (5 filas 2 columnas), cada grupo de enlaces supongamos 20, se muestra de forma aleatoria en cada celda de la tabla, o sea en cada celda se mostraran aleatoriamente 20 enlaces, los cuales son los mismos 20 enlaces para cada grupo, lo que no logro hacer es que no se repitan entre grupos, por ejemplo no tiene que repetirse el enlace 1 en la celda 1 y en la 2 ni en ninguna otra cada vez que se refresque el contenido. Codigo java script: <script type="text/javascript"> if (document.getElementById) document.documentElement.className = 'jsclass'; var randomcontentdisplay={ divholders:new Object(), masterclass: "randomcontent", init:function(){ if (!document.getElementById) return var alldivs=document.getElementsByTagName("div") var randomcontentsearch=new RegExp(this.masterclass+"\\s+(group\\d+)", "i") for (var i=0; i<alldivs.length; i++){ if (randomcontentsearch.test(alldivs[i].className)){ if (typeof this.divholders[RegExp.$1]=="undefined") this.divholders[RegExp.$1]=new Array() this.divholders[RegExp.$1].push(alldivs[i]) } } this.showone() }, showone:function(){ for (group in this.divholders){ var chosenOne=Math.floor(Math.random()*this.divholders[group].length) this.divholders[group][chosenOne].style.display="block" } } } </script> El CSS: <style type="text/css"> .jsclass body .randomcontent{ display: none; } </style> El HTML, acá solo muestro 3 por grupo para que se entienda la idea, pero en total son 20 por grupo, la idea es que no se repitan los enlaces: <table width="100%" border="0"> <tr> <td> <div class="randomcontent group1">1</div> <div class="randomcontent group1">2</div> <div class="randomcontent group1">3</div> </td> <td> <div class="randomcontent group2">1</div> <div class="randomcontent group2">2</div> <div class="randomcontent group2">3</div> </td> </tr> <tr> <td> <div class="randomcontent group3">1</div> <div class="randomcontent group3">2</div> <div class="randomcontent group3">3</div> </td> <td> <div class="randomcontent group4">1</div> <div class="randomcontent group4">2</div> <div class="randomcontent group4">3</div> </td> </tr> <tr> <td> <div class="randomcontent group5">1</div> <div class="randomcontent group5">2</div> <div class="randomcontent group5">3</div> </td> <td> <div class="randomcontent group6">1</div> <div class="randomcontent group6">2</div> <div class="randomcontent group6">3</div> </td> </tr> <tr> <td> <div class="randomcontent group7">1</div> <div class="randomcontent group7">2</div> <div class="randomcontent group7">3</div> </td> <td> <div class="randomcontent group8">1</div> <div class="randomcontent group8">2</div> <div class="randomcontent group8">3</div> </td> </tr> <tr> <td> <div class="randomcontent group9">1</div> <div class="randomcontent group9">2</div> <div class="randomcontent group9">3</div> </td> <td> <div class="randomcontent group10">1</div> <div class="randomcontent group10">2</div> <div class="randomcontent group10">3</div> </td> </tr> </table> <script type="text/javascript"> randomcontentdisplay.init() </script> la idea es que en cada celda de la tabla de arriba, se muestren los enlaces del 1 al 20 pero sin repetir, Muchas gracias por su ayuda Edited March 15, 2011 by VITOCOMANGA Link to comment Share on other sites More sharing options...
cañangasñangas Posted March 15, 2011 Report Share Posted March 15, 2011 podrias hacer esto links =; //aca pones tu array con los links aleatorio = Math.floor(Math.random()*(links.lenght)); arrays = new Array(links.lenght); aux=-1; while(true){ aux++; aleatorio = Math.floor(Math.random()*(total+1)); pass = true; for(i=0;i<aux;i++){ if(arrays[i] == aleatorio){ pass = false; break; } } if(pass == true){ arrays[aux] = links[aleatorio]; if(aux+1 == links.lenght){ break; } } else{ aux--; } } document.write('<table width="100%" border="0"> <tr> <td> <div class="randomcontent group1">'+arrays[0]+'</div> <div class="randomcontent group1">'+arrays[1]+'</div> <div class="randomcontent group1">'+arrays[2]+'</div> </td> <td> <div class="randomcontent group2">'+arrays[3]+'</div> <div class="randomcontent group2">'+arrays[4]+'</div> <div class="randomcontent group2">'+arrays[5]+'</div> </td> </tr> <tr> <td> <div class="randomcontent group3">'+arrays[6]+'</div> <div class="randomcontent group3">'+arrays[7]+'</div> <div class="randomcontent group3">'+arrays[8]+'</div> </td> <td> <div class="randomcontent group4">'+arrays[9]+'</div> <div class="randomcontent group4">'+arrays[10]+'</div> <div class="randomcontent group4">'+arrays[11]+'</div> </td> </tr> <tr> <td> <div class="randomcontent group5">'+arrays[12]+'</div> <div class="randomcontent group5">'+arrays[13]+'</div> <div class="randomcontent group5">'+arrays[14]+'</div> </td> <td> <div class="randomcontent group6">'+arrays[15]+'</div> <div class="randomcontent group6">'+arrays[16]+'</div> <div class="randomcontent group6">'+arrays[17]+'</div> </td> </tr> <tr> <td> <div class="randomcontent group7">'+arrays[18]+'</div> <div class="randomcontent group7">'+arrays[19]+'</div> <div class="randomcontent group7">'+arrays[20]+'</div> </td> <td> <div class="randomcontent group8">'+arrays[21]+'</div> <div class="randomcontent group8">'+arrays[22]+'</div> <div class="randomcontent group8">'+arrays[23]+'</div> </td> </tr> <tr> <td> <div class="randomcontent group9">'+arrays[24]+'</div> <div class="randomcontent group9">'+arrays[25]+'</div> <div class="randomcontent group9">'+arrays[26]+'</div> </td> <td> <div class="randomcontent group10">'+arrays[27]+'</div> <div class="randomcontent group10">'+arrays[28]+'</div> <div class="randomcontent group10">'+arrays[29]+'</div> </td> </tr> </table>'); Link to comment Share on other sites More sharing options...
VITOCOMANGA Posted March 16, 2011 Author Report Share Posted March 16, 2011 (edited) Muchas gracias por responder, ocurre que si no me equivoco porfa corrígeme, lo que me propones es dividir de tres enlaces o mas por celda, siempre que los enlaces que se citen estén en grupos de 3 o más cosa que se intercambien entre los mismos de cada celda, siempre que sean diferentes. Mi idea es que en cada celda se muetren del 0 al 30 o del 0 a x sin repetir entre celdas. Intente probarlo pero no me resulto, cree el nuevo Array que contiene los enlaces pero seguro que me quedo mal algo en la nomenclatura y no me imprime nada en pantalla. hice esto: <html> <head> <script type="text/javascript"> function aleatorio() { var links= new Array(); links[0]="LINK1"; links[1]="LINK2"; links[2]="LINK3"; links[3]="LINK4"; links[4]="LINK5"; links[5]="LINK6"; links[6]="LINK7"; links[7]="LINK8"; links[8]="LINK9"; links[9]="LINK10"; links[10]="LINK11"; links[11]="LINK12"; links[12]="LINK13"; links[13]="LINK14"; links[14]="LINK15"; links[15]="LINK16"; links[16]="LINK17"; links[17]="LINK18"; links[18]="LINK19"; links[19]="LINK20"; links[20]="LINK21"; links[21]="LINK22"; links[22]="LINK23"; links[23]="LINK24"; links[24]="LINK25"; links[25]="LINK26"; links[26]="LINK27"; links[27]="LINK28"; links[28]="LINK29"; links[29]="LINK30"; } } aleatorio = Math.floor(Math.random()*(links.lenght)); arrays = new Array(links.lenght); aux=-1; while(true){ aux++; aleatorio = Math.floor(Math.random()*(total+1)); pass = true; for(i=0;i<aux;i++){ if(arrays[i] == aleatorio){ pass = false; break; } } if(pass == true){ arrays[aux] = links[aleatorio]; if(aux+1 == links.lenght){ break; } } else{ aux--; } } </script> </head> <body> <script type="text/javascript"> document.write('<table width="100%" border="0"> <tr> <td> <div class="aleatorio group1">'+arrays[0]+'</div> <div class="aleatorio group1">'+arrays[1]+'</div> <div class="aleatorio group1">'+arrays[2]+'</div> </td> <td> <div class="aleatorio group2">'+arrays[3]+'</div> <div class="aleatorio group2">'+arrays[4]+'</div> <div class="aleatorio group2">'+arrays[5]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group3">'+arrays[6]+'</div> <div class="aleatorio group3">'+arrays[7]+'</div> <div class="aleatorio group3">'+arrays[8]+'</div> </td> <td> <div class="aleatorio group4">'+arrays[9]+'</div> <div class="aleatorio group4">'+arrays[10]+'</div> <div class="aleatorio group4">'+arrays[11]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group5">'+arrays[12]+'</div> <div class="aleatorio group5">'+arrays[13]+'</div> <div class="aleatorio group5">'+arrays[14]+'</div> </td> <td> <div class="aleatorio group6">'+arrays[15]+'</div> <div class="aleatorio group6">'+arrays[16]+'</div> <div class="aleatorio group6">'+arrays[17]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group7">'+arrays[18]+'</div> <div class="aleatorio group7">'+arrays[19]+'</div> <div class="aleatorio group7">'+arrays[20]+'</div> </td> <td> <div class="aleatorio group8">'+arrays[21]+'</div> <div class="aleatorio group8">'+arrays[22]+'</div> <div class="aleatorio group8">'+arrays[23]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group9">'+arrays[24]+'</div> <div class="aleatorio group9">'+arrays[25]+'</div> <div class="aleatorio group9">'+arrays[26]+'</div> </td> <td> <div class="aleatorio group10">'+arrays[27]+'</div> <div class="aleatorio group10">'+arrays[28]+'</div> <div class="aleatorio group10">'+arrays[29]+'</div> </td> </tr> </table>'); </script> </body> </html> Edited March 16, 2011 by VITOCOMANGA Link to comment Share on other sites More sharing options...
cañangasñangas Posted March 16, 2011 Report Share Posted March 16, 2011 Muchas gracias por responder, ocurre que si no me equivoco porfa corrígeme, lo que me propones es dividir de tres enlaces o mas por celda, siempre que los enlaces que se citen estén en grupos de 3 o más cosa que se intercambien entre los mismos de cada celda, siempre que sean diferentes. Mi idea es que en cada celda se muetren del 0 al 30 o del 0 a x sin repetir entre celdas. Intente probarlo pero no me resulto, cree el nuevo Array que contiene los enlaces pero seguro que me quedo mal algo en la nomenclatura y no me imprime nada en pantalla. hice esto: <html> <head> <script type="text/javascript"> function aleatorio() { var links= new Array(); links[0]="LINK1"; links[1]="LINK2"; links[2]="LINK3"; links[3]="LINK4"; links[4]="LINK5"; links[5]="LINK6"; links[6]="LINK7"; links[7]="LINK8"; links[8]="LINK9"; links[9]="LINK10"; links[10]="LINK11"; links[11]="LINK12"; links[12]="LINK13"; links[13]="LINK14"; links[14]="LINK15"; links[15]="LINK16"; links[16]="LINK17"; links[17]="LINK18"; links[18]="LINK19"; links[19]="LINK20"; links[20]="LINK21"; links[21]="LINK22"; links[22]="LINK23"; links[23]="LINK24"; links[24]="LINK25"; links[25]="LINK26"; links[26]="LINK27"; links[27]="LINK28"; links[28]="LINK29"; links[29]="LINK30"; } } aleatorio = Math.floor(Math.random()*(links.lenght)); arrays = new Array(links.lenght); aux=-1; while(true){ aux++; aleatorio = Math.floor(Math.random()*(total+1)); pass = true; for(i=0;i<aux;i++){ if(arrays[i] == aleatorio){ pass = false; break; } } if(pass == true){ arrays[aux] = links[aleatorio]; if(aux+1 == links.lenght){ break; } } else{ aux--; } } </script> </head> <body> <script type="text/javascript"> document.write('<table width="100%" border="0"> <tr> <td> <div class="aleatorio group1">'+arrays[0]+'</div> <div class="aleatorio group1">'+arrays[1]+'</div> <div class="aleatorio group1">'+arrays[2]+'</div> </td> <td> <div class="aleatorio group2">'+arrays[3]+'</div> <div class="aleatorio group2">'+arrays[4]+'</div> <div class="aleatorio group2">'+arrays[5]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group3">'+arrays[6]+'</div> <div class="aleatorio group3">'+arrays[7]+'</div> <div class="aleatorio group3">'+arrays[8]+'</div> </td> <td> <div class="aleatorio group4">'+arrays[9]+'</div> <div class="aleatorio group4">'+arrays[10]+'</div> <div class="aleatorio group4">'+arrays[11]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group5">'+arrays[12]+'</div> <div class="aleatorio group5">'+arrays[13]+'</div> <div class="aleatorio group5">'+arrays[14]+'</div> </td> <td> <div class="aleatorio group6">'+arrays[15]+'</div> <div class="aleatorio group6">'+arrays[16]+'</div> <div class="aleatorio group6">'+arrays[17]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group7">'+arrays[18]+'</div> <div class="aleatorio group7">'+arrays[19]+'</div> <div class="aleatorio group7">'+arrays[20]+'</div> </td> <td> <div class="aleatorio group8">'+arrays[21]+'</div> <div class="aleatorio group8">'+arrays[22]+'</div> <div class="aleatorio group8">'+arrays[23]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group9">'+arrays[24]+'</div> <div class="aleatorio group9">'+arrays[25]+'</div> <div class="aleatorio group9">'+arrays[26]+'</div> </td> <td> <div class="aleatorio group10">'+arrays[27]+'</div> <div class="aleatorio group10">'+arrays[28]+'</div> <div class="aleatorio group10">'+arrays[29]+'</div> </td> </tr> </table>'); </script> </body> </html> perdon puse lenght y es length arreglado... <html> <head> <script type="text/javascript"> var links= new Array(30); links[0]="LINK1"; links[1]="LINK2"; links[2]="LINK3"; links[3]="LINK4"; links[4]="LINK5"; links[5]="LINK6"; links[6]="LINK7"; links[7]="LINK8"; links[8]="LINK9"; links[9]="LINK10"; links[10]="LINK11"; links[11]="LINK12"; links[12]="LINK13"; links[13]="LINK14"; links[14]="LINK15"; links[15]="LINK16"; links[16]="LINK17"; links[17]="LINK18"; links[18]="LINK19"; links[19]="LINK20"; links[20]="LINK21"; links[21]="LINK22"; links[22]="LINK23"; links[23]="LINK24"; links[24]="LINK25"; links[25]="LINK26"; links[26]="LINK27"; links[27]="LINK28"; links[28]="LINK29"; links[29]="LINK30"; aleatorio = Math.floor(Math.random()*(links.length)); arrays = new Array(links.length); aux=-1; while(true){ aux++; aleatorio = Math.floor(Math.random()*(total+1)); pass = true; for(i=0;i<aux;i++){ if(arrays[i] == aleatorio){ pass = false; break; } } if(pass == true){ arrays[aux] = links[aleatorio]; if(aux+1 == links.length){ break; } } else{ aux--; } } </script> </head> <body> <script type="text/javascript"> document.write('<table width="100%" border="0"> <tr> <td> <div class="aleatorio group1">'+arrays[0]+'</div> <div class="aleatorio group1">'+arrays[1]+'</div> <div class="aleatorio group1">'+arrays[2]+'</div> </td> <td> <div class="aleatorio group2">'+arrays[3]+'</div> <div class="aleatorio group2">'+arrays[4]+'</div> <div class="aleatorio group2">'+arrays[5]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group3">'+arrays[6]+'</div> <div class="aleatorio group3">'+arrays[7]+'</div> <div class="aleatorio group3">'+arrays[8]+'</div> </td> <td> <div class="aleatorio group4">'+arrays[9]+'</div> <div class="aleatorio group4">'+arrays[10]+'</div> <div class="aleatorio group4">'+arrays[11]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group5">'+arrays[12]+'</div> <div class="aleatorio group5">'+arrays[13]+'</div> <div class="aleatorio group5">'+arrays[14]+'</div> </td> <td> <div class="aleatorio group6">'+arrays[15]+'</div> <div class="aleatorio group6">'+arrays[16]+'</div> <div class="aleatorio group6">'+arrays[17]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group7">'+arrays[18]+'</div> <div class="aleatorio group7">'+arrays[19]+'</div> <div class="aleatorio group7">'+arrays[20]+'</div> </td> <td> <div class="aleatorio group8">'+arrays[21]+'</div> <div class="aleatorio group8">'+arrays[22]+'</div> <div class="aleatorio group8">'+arrays[23]+'</div> </td> </tr> <tr> <td> <div class="aleatorio group9">'+arrays[24]+'</div> <div class="aleatorio group9">'+arrays[25]+'</div> <div class="aleatorio group9">'+arrays[26]+'</div> </td> <td> <div class="aleatorio group10">'+arrays[27]+'</div> <div class="aleatorio group10">'+arrays[28]+'</div> <div class="aleatorio group10">'+arrays[29]+'</div> </td> </tr> </table>'); </script> </body> </html> Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now