Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

danilow

pegar as coordenadas xey com js não obstrutivo

Recommended Posts

Fala galera,

Não sou muito participativo no fórum, mas sempre que posso, estou navegando por aqui.

Estou tendo um problema com javascript não obstrutivo, para fazer uma coisa, relativamente simples.

 

Tenho um calendário montado com php e html, e estou começando a interagir o javascript com ele, quero fazer o seguinte: Quando o camarada clicar em algum dia, no lugar que ele clicou, abre uma div, dentro dessa div um formulário (o formulário ainda é pra frente).

 

O que acontece?

 

Estou fazendo tudo com javascript não obstrutivo com a seguinte função:

function checaLinks(){	var todosLinks = document.getElementsByTagName("a"); // pega todos os links 	for (var i=0; i<todosLinks.length; i++){ 		var cada_link = todosLinks[i]; // varre os links um por um		var atributo_rel = String(cada_link.getAttribute('rel')); // pega o valor do atributo rel no link		if (cada_link.getAttribute('href') && (atributo_rel.toLowerCase().match('date'))){ 			cada_link.onclick = function () { coord(this); return false; }		}	}	}window.onload=checaLinks;

Faço isso, para que a div abra apenas nos links com rel='date'

Mas, ocorre um pequeno problema:

na linha onde digo:

cada_link.onclick = function () { coord(this); return false; }
eu gostaria de mandar o evento, que pegou onde o usuário clicou, para a função coord.

Para que a div seja aberta no local exato onde foi clicado.

Isso não ocorre, ele não está mandando esse evento, e os valores estão ficando como 0, como podem ver aqui

 

Será que alguém poderia me ajudar para eu mandar o local que foi clicado para a função coord?

 

se eu chamar a função coor assim:

window.onclick=coord;

 

ela funciona, porém, qualquer lugar da página que eu clicar, ela vai me trazer uma div, e não é essa a intenção.

 

A Dúvida é a seguinte: O que devo colocar quando chamo a função coord() para que eu consiga enviar o local que foi clicado?

 

Grato,

 

Danilo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia amigo, pelo que entendi, você quer que a função coord passe como parâmetro o objeto (link) que a chamou?

 

Se for, tente assim:

 

cada_link.onclick = function () { coord(cada_link); return false; }
Veja se é isso.

 

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então,O que eu quero, é passar o lugar que o camarada clicou.Considerando que cada_link tem um id único, tem como eu descobrir as coordenadas x e y desse id?Ou alguma outra forma para eu descobrir essas coordenadas?do jeito que você me passou, não funciona com minha função coord().Resumindo, como descobrir as coordenadas de um document.getElementById("id")?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça as seguintes alterações:

 

No seu código inclua a função:

function addEvent(obj, evType, fn){	if (obj.addEventListener)		obj.addEventListener(evType, fn, true);	if (obj.attachEvent)		obj.attachEvent("on" + evType, fn);};
Altere esta linha:

cada_link.onclick = function () { coord(this); return false;
Por esta:

addEvent(cada_link,'click', function(){var ev = window.event || Event;//aqui vem o eventovar obj = ev.target || ev.srcElement;//aqui o objeto que sofreu o eventocoord(obj, ev);//Chamo a função enviando os dois parametros});
Com isso seu código continuará sendo "não obstrutivo" e crossbrowser.

 

Se tiver afim de aprender mais sobre os "modelos de eventos" [tanto atigo como os novos] dá um bizoiada aqui:

http://www.quirksmode.org/js/introevents.html

 

fuii...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.