Ir para conteúdo
Fórum Script Brasil
  • 0

links aleatórios não podem se repetir


Junior STR

Pergunta

Olá pessoa! Sou novo aqui no Fórum e estou com esse probleminha aqui...

Tenho o seguinte script que abre links aleatórios ao clicar em uma imagem ("IMAGEM.jpg")

Por exemplo: No momento que o usuário entra no site, o script escolheu o LINK-02.html, então a IMAGEM.jpg terá um link para esse endereço.

Porém se o usuário entrar em outra página ou recarregar a mesma página,

o script irá escolher aleatóriamente outra url entre as mais de 20 que o meu script tem.

Quero fazer com que os links não se repitam na mesma sessão do internauta.

ou só se repitam quando todos os links do script já tiverem sido acessados.

Agradeço quem puder me ajudar. Valeu...

Segue o Script:

<script language="Javascript"> 
hoje = new Date() 
numero_de_imagens = 2 
segundos = hoje.getSeconds() 
numero = segundos % numero_de_imagens 
if (numero == 0) 
{ link = "LINK-01.html" 
} 
if (numero == 1) 
{ link = "LINK-02.html" 
} 

document.write('<a href="' + link + '"><img src="IMAGEM.jpg" border="0" /></a>') 
</script>

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

i aew Junior STR, bom eu tinha um script parecido com o que você precisa, eu adaptei aqui, se não estiver do jeito que você queria é só adaptar ele, bom segue o script:

window.onload = function(){
    addLiksDiversos( "imagemAleatoria" , 3);
}

var cookie = {
    set : function( name , val , dias ){
        var data = new Date();
        if ( !dias ) dias = 1000;
        data.setTime( data.getTime() + ( 86400 * dias ) );
        document.cookie = name + "=" + val + "; expires=" + data.toGMTString() + "; path=/";
    } ,
    get : function( name ){
        try {
            var cookies = document.cookie.split( name + "=" );
            var c = cookies[1].split( ";" );
            return c[0];
        }
        catch( exc ){ return false; }
    } ,
    unset : function( name ){
        this.set( name , "" , -1 );
    }
}

function addLiksDiversos( id , numero_de_imagens ){
        var getAleatorio = function( numero ){
            return Math.ceil( Math.random() * numero );
        }

        var putLink = function( numeroAleatorio ){
            var obj = document.getElementById( id );
            var tagA = document.createElement( "a" );
            tagA.setAttribute( "href" , "LINK-0" + numeroAleatorio + ".html" );
            var tagImg = document.createElement( "img" );
            tagImg.setAttribute( "border" , 0 );
            tagImg.setAttribute( "src" , "http://www.iconspedia.com/uploads/302022621988656739.png" );
            tagA.appendChild( tagImg );
            obj.appendChild(tagA)
        }

        var run = function(){
            var aleatorio = getAleatorio( numero_de_imagens );

            if ( !cookie.get( "link" ) ) {
                cookie.set( "link" , aleatorio + "," );
            }
            else {
                var arrCookie = cookie.get( "link" ).split( "," );
            
                if ( numero_de_imagens == ( arrCookie.length - 1 ) ) {
                    cookie.unset( "link" );
                }
                else {
                    var bContem;
                    do {
                        bContem = false;
                        for ( var i = 0; i < ( arrCookie.length -1 ); i++ ){
                            if ( aleatorio == arrCookie[i] ) {
                                aleatorio = getAleatorio( numero_de_imagens );
                                bContem = true;
                                break;
                            }
                        }
                    } while ( bContem );
                }
                cookie.set( "link" , cookie.get( "link" ) + aleatorio + "," );
                putLink(aleatorio);
            }
        }

        run();
    }
e o html fica ssim:
<body>
	<div id="imagemAleatoria"></div>
</body>

bom é isso, espero que ajude abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Romerito, desculpa a minha ignorância (é que sou supernovato em javascript), no caso eu teria q colocar o seu código

dentro do meu código? Pode me dar um exemplo?

Kuroi, no link q você indicou pelo q entendi, é gerado um cookie onde a primeira vez que o user acessa é perguntado

o nome dele, e quando ele acessar novamente será exibida uma mensagem de boas vindas a ele (ex: Bem vindo Fulano...),

sendo q "Fulano" foi o nome que ele deu na primeira vez q acessou. O problema é q não sei como adaptar para o meu caso

(é que sou supernovato em javascript).

Valeu por enquanto, galera! Abraços...

Editado por Junior STR
Link para o comentário
Compartilhar em outros sites

  • 0
Romerito, desculpa a minha ignorância (é que sou supernovato em javascript), no caso eu teria q colocar o seu código

dentro do meu código? Pode me dar um exemplo?

bom, você apenas precisa adicionar o codigo no head, entre a tag script, quando for chamar a funcao addLiksDiversos você precisa passar o id do elemento que vai receber o link

e a quantidade de links que você tem, segue um exemplo completo:

<html>
<head>
<title> Links </title>
&lt;script type="text/javascript" language="javascript">

var cookie = {
	set : function( name , val , dias ){
		var data = new Date() ;
		if ( !dias ) dias = 1000 ;
		data.setTime( data.getTime() + ( 86400 * dias ) ) ;
		document.cookie = name + "=" + val + "; expires=" + data.toGMTString() + "; path=/" ;
	} ,

	get : function( name ){
		try {
			var cookies = document.cookie.split( name + "=" ) ;
			var c = cookies[1].split( ";" ) ;
			return c[0] ;
		}
		catch( exc ){ return false ; }
	} ,

	unset : function( name ){
		this.set( name , "" , -1 ) ;
	}
}
window.onload = function(){
	addLiksDiversos( "imagemAleatoria" , 3);//aqui é chamada a funcao, no onload da pagina
}

function addLiksDiversos( id , numero_de_imagens ){
		var getAleatorio = function(){
			return Math.ceil( Math.random() * numero_de_imagens ) ;
		}

		var putLink = function( numeroAleatorio ){
			var obj = document.getElementById( id ) ;
			var tagA = document.createElement( "a" ) ;
			tagA.setAttribute( "href" , "LINK-0" + numeroAleatorio + ".html" ) ;
			var tagImg = document.createElement( "img" ) ;
			tagImg.setAttribute( "border" , 0 ) ;
			tagImg.setAttribute( "src" , "http://www.iconspedia.com/uploads/302022621988656739.png" ) ;
			tagA.appendChild( tagImg ) ;
			obj.appendChild(tagA)
		}

		var run = function(){
			var aleatorio = getAleatorio() ;

			if ( !cookie.get( "link" ) ) {
				cookie.set( "link" , aleatorio + "," ) ;
			}
			else {
				var arrCookie = cookie.get( "link" ).split( "," ) ;

				if ( numero_de_imagens == ( arrCookie.length - 1 ) ) {
					cookie.unset( "link" ) ;
				}
				else {
					var bContem;
					do {
						bContem = false;
						for ( var i = 0 ; i < ( arrCookie.length -1 ) ; i++ ){
							if ( aleatorio == arrCookie[i] ) {
								aleatorio = getAleatorio() ;
								bContem = true ;
								break;
							}
						}
					} while ( bContem ) ;
				}
				cookie.set( "link" , cookie.get( "link" ) + aleatorio + "," ) ;
				putLink(aleatorio);
			}
		}

		run() ;
	}
</script>
</head>
<body>
	<div id="imagemAleatoria"></div>
</body>
</html>

qualquer dúvida posta aew, abraço!

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Romerito. Beleza?

Fiz como você indicou e ao tentar colocar seu script entre <head></head> deu o seguinte erro:

"Não foi possível analisar o seu modelo, pois sua formatação é inadequada.

Certifique-se de que todos os elementos XML estão fechados adequadamente.

Mensagem de erro em XML: O conteúdo dos elementos deve ser composto de dados de caráter bem formado ou marcação."

Em relação a meu codigo com a div id="imagemAleatoria" ficou assim:

&lt;script language="Javascript">
hoje = new Date()
numero_de_imagens =  /* aqui como voce sabe tem o numero total de ifs */
segundos = hoje.getSeconds()
numero = segundos % numero_de_imagens
if (numero == 0)
{ link = "[color="#FF0000"]LINK-01.html[/color]"
}
/* aqui seguem outros ifs, cada um com um link diferente, no total são mais de 50 */
document.write('<div id="imagemAleatoria"><a href=" ' + link + ' "><img src="IMAGEM.jpg"</a></div>')

Por enquanto valeu pela ajuda, abraços.

Editado por Junior STR
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...