Jump to content

Javascript sistema de links aleatorios


Recommended Posts

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 by VITOCOMANGA
Link to comment
Share on other sites

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

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 by VITOCOMANGA
Link to comment
Share on other sites

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...