Jump to content


Photo

Passar Conteúdo Da Variável Na Função


  • Faça o login para participar
13 replies to this topic

#1 noob

noob

    12 Horas

  • Usuários
  • 163 posts
  • Sexo:Não informado

Posted 11/10/2008, 16:19

É o seguinte, estou numa situação chata aqui, vou resumir num exemplo...

HTML:
<a href="http://www.google.com.br" id="ancora1">link do google</a>
<a href="http://www.yahoo.com.br" id="ancora2">link do yahoo</a>

JS:

function teste(teste)
{
 alert(teste);
}

for(i=1; i<3; i++)
{

var link = document.getElementById('ancora'+i);
var a = link.href;

link.onclick = function()
{
	teste(a);
	return false;
}

link.href = "#";

}

Então...

O problema é o seguinte.

Quando eu clico no link do google ali, o endereço ao invés de apontar para o google, aponta para endereço do último da lista, no caso o yahoo...

Em teoria, o javascript em realtime ficaria assim:

<a href="#" id="ancora1" onclick="teste(a)">link do google</a>
<a href="#" id="ancora2" onclick="teste(a)">link do yahoo</a>

E a variável "a" acaba terminando com o valor de "yahoo", então qualquer um dos dois links que eu clique mostra no alert o "yahoo".

Entenderam a idéia?

Era para estar escrito no link algo +- assim:

<a href="#" id="ancora1" onclick="http://www.google.com.br">link do google</a>
<a href="#" id="ancora2" onclick="http://www.yahoo.com.br">link do yahoo</a>

Entenderam o ponto? era para a variável A ser escrita ali dentro do "onclick" e não "puxada" da memória na hora que clicasse...

[]'s

Edição feita por: Firehalk, 11/10/2008, 16:35.
Por favor, use [CODE] para trechos de código.


#2 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 11/10/2008, 16:38

Se eu entendi bem, você tá complicando 30x o que tu deseja fazer :P

Bastaria algo assim:

function redir(link) {
window.location.href = link;
}

E nos links:

<a href="#" onclick="redir('http://www.google.com/');return false;">teste</a>

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#3 noob

noob

    12 Horas

  • Usuários
  • 163 posts
  • Sexo:Não informado

Posted 11/10/2008, 16:43

Exato, é a mesma coisa que eu quero, no entanto......

Eu preciso alterar dinamicamente, não direto no source, sacou? ^^

---

Eu abro a página, o javascript altera todos os links e eu como usuário apenas clico.

Eu preciso de algo na linha "teste(a);" para escrever "literalmente o valor de a" = http://www.google.com.br

Mas você entendeu minha idéia pelo menos.

[]'s

Edição feita por: noob, 11/10/2008, 16:45.


#4 Nicholas Pufal

Nicholas Pufal

    Impossível: só existe até alguém duvidar e provar o contrário.

  • Usuários
  • 1655 posts
  • Sexo:Masculino
  • Localidade:Porto Alegre

Posted 11/10/2008, 17:00

Mas é exatamente assim que esse script que eu passei funciona.

Você apenas tem que colocar o link na chamada da função. Ex:

<a href="#" onclick="redir('http://www.google.com/');return false;">Google</a>
<a href="#" onclick="redir('http://www.terra.com.br/');return false;">Terra</a>

É meio sem sentido, pois poderia mudar apenas no "href" para algo desse gênero...

Eu não entendi muito bem a tua idéia com essa função :huh:

Edição feita por: Firehalk, 11/10/2008, 17:01.

BLOG Touché Criação - Vamos trocar idéias? -> http://blog.touchecriacao.com.br/
// Links úteis: Busca || Regras
// Não respondo dúvidas via mensagem privada. Use o fórum para buscar ou perguntar.

#5 noob

noob

    12 Horas

  • Usuários
  • 163 posts
  • Sexo:Não informado

Posted 11/10/2008, 17:13

É como eu disse, dei um exemplo do meu problema...

A situação é muito maior, se aplicam muitos mais scripts e muito mais código.
Eu fiz um exemplo exatamente da parte onde estou com o problema no desenvolvimento.

Tanto o meu script como o seu tem a mesma finalidade, a questão é, como é feito isto...
No caso eu preciso que seja feito +- daquela maneira que eu apresentei, enquanto meu problema em específico é aquela linha comentada.

E se eu trocasse todo o meu código pela sua solução eu perderia metade da funcionalidade que eu tenho atualmente no site.

Espero que entenda.

[]'s

Edição feita por: noob, 11/10/2008, 17:30.


#6 Cristiano Galdino

Cristiano Galdino

    Dark Defender

  • Administradores
  • 3738 posts
  • Sexo:Masculino
  • Localidade:Brasília, DF

Posted 11/10/2008, 18:58

Interessante. Não vou explanar o código, caso tenha alguma dúvida avise.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br" lang="pt-br">
<head>
	<title>Cristiano Galdino: Sample</title>
	<meta name="language" content="pt-br" />
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

	<script type="text/javascript">
	<!--
	window.onload = function() {
		if( !document.getElementsByTagName ) {
			return false;
		} else {
			var link = document.getElementsByTagName( "a" );
			for( var i=0; i < link.length; i++ ) {
				if( link[i].getAttribute( "id" ) ) {
					if( link[i].getAttribute( "id" ).slice( 0,6 ) == "ancora" ) {
						link[i].onclick = function() {
							doWhat( this.getAttribute( "href" ) );
							return false;
						}
					}
				}
			}
		}
	}

	function doWhat( url ) {
		window.alert( url );
	}
	//-->
</script>

</head>
<body>

<a href="http://www.google.com.br" id="ancora1">link do google</a><br />
<a href="http://www.apple.com">link da apple (sem efeito)</a><br />
<a href="http://www.yahoo.com.br" id="ancora2">link do yahoo</a>

</body>
</html>

Eu acho que não deveria ser usado id como referência para pegar os valores, prefiro usar class. Vveja o exemplo em http://cristiano.galdino.net/ os links que tem classe popUp abrem em nova janela.


---

...
Eu não entendi muito bem a tua idéia com essa função :huh:

Acessibilidade. Imagine que o navegador do usuário não tenha o JavaScript ativo, quando clicassem no link iriam para uma âncora #. ;)

Edição feita por: Cristiano Galdino, 11/10/2008, 19:49.

Cristiano Galdino
- http://cristiano.galdino.net/

“Since 2003”


#7 noob

noob

    12 Horas

  • Usuários
  • 163 posts
  • Sexo:Não informado

Posted 11/10/2008, 23:59

Obrigado pela ajuda Cristiano Galdino.

Realmente eu não uso o ID no link, foi uma maneira de me expressar sobre o "problema".

<script type="text/javascript">
<!--
window.onload = function() {
	if( !document.getElementsByTagName ) {
		return false;
	} else {
		var link = document.getElementsByTagName( "a" );
		for( var i=0; i < link.length; i++ )
		{
			if( link[i].getAttribute( "id" ) ) {
				if( link[i].getAttribute( "id" ).slice( 0,6 ) == "ancora" ) {
					link[i].onclick = function() {
						doWhat( this.getAttribute( "href" ) );
						return false;
					}
				}
			}
			link[i].href="#"; // aqui ferra (você me mandou sem);P
		}
	}
}

function doWhat( url ) {
	window.alert( url );
}
//-->
</script>

Veja que é um site 100% acessível, com ou sem javascript o site abre da "mesma" maneira (muda poucas coisas).

Então Cristiano, concorda que o meu código e o seu tem o mesmo efeito certo? tanto que o que o meu está "idêntico" ao seu.
Se você olhar meu site ali em cima, você deve entender a minha idéia de colocar o # é para fazer o "histórico do ajax".

Eu poderia por ex, passar o "href" para o "rel" e modificar o href, e quando clicasse ler o atributo "rel", porém, não considero uma solução muito bem aplicada.
Afinal eu uso o rel para outra coisa já, mas seria uma solução para o meu problema.

Quem puder me dar um toque ali, eu agradeço.
O Cristiano entendeu exatamente a idéia do código e do problema, no entanto seu código teria o mesmo problema que o meu com aquela linha.

[]'s

Edição feita por: noob, 12/10/2008, 05:27.


#8 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 12/10/2008, 00:49

Coloca no title e, quando clicar, leia o title. :P

Mas isso é chato, é muito mais fácil criar uma nova função (no seu primeiro script):
link.onclick = new Function("teste('"+a+"')");
Deve funcionar.
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador

#9 noob

noob

    12 Horas

  • Usuários
  • 163 posts
  • Sexo:Não informado

Posted 12/10/2008, 01:02

É funciona.....
Rapaz, te amo hahahaha :P

No bom sentido claro, tão simples e a gente não pensa na hora né? :P

#10 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 11/10/2017, 17:33

Cephalexin Mixed With Diclofenac Effects Better Pills Than Viagra Cialis Brand 20 Mg viagra Buy Tadalista

#11 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 12/10/2017, 02:02

Where To Buy Avanafil Acheter Cialis Tunisie cialis buy online How To Order Viagra From Canada Is Fish Amoxicillin Safe For Humans Comment Durer Plus Longtemps Chambres

#12 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 12/10/2017, 04:09

Ward Capsule Cephalexin For Tooth Infection levitra 20mg Cephalexin Breast Feeding
Natural Remedies For Ed Nizoral Priligy Generico En Mexico viagra Zithromax India Online Pharmacies

#13 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 28/10/2017, 21:47

Buy Amoxicillin For Humans viagra Levitra Mit Rezept Zithromax At Walgreens Amoxicillin Enterobacter
Eolica Al Propecia viagra online Amoxicillin Dose For Strep B Vrai Viagra Doctissimo Buy Phenergan Overnight Deliery

#14 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 13/11/2017, 01:59

Shelf Life Keflex Cialis 10 Generika viagra Cialis 5 Mg Forum Buy Isotretinoin North Ayrshire
Lipitor Cephalexin Reaction Buy Online Levitra viagra Kamagra Pas Cher France Purchase Discount Bentyl Internet Online Jersey City Buy Pain Meds Online With E Check
Roche Xenical Cialis O Viagra O Levitra Buy Spironolactone cialis buy online Fastest Delivery Of Online Viagra




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq