Ir para conteúdo

POWERED BY:

Arquivado

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

renanfog

attachEvent certo mas não funciona this na função

Recommended Posts

E ai, galera, beleza??

Seguinte, mais uma duvida com o IE..

 

To usando essa função q da certinho em ambos os browsers..

 

function adicionaEvento(objeto, funcao, evento){			if (window.addEventListener){				objeto.addEventListener(evento, funcao, true);			}else if (window.attachEvent){				objeto.attachEvent('on'+evento,funcao);			}		}

Ate ai certo, mas se eu dou um

 

adicionaEvento(document.getElementById('eeee'), funcaoQualquer, 'click');

Ele funciona perfeito no FF e Opera, no Ie tb da certo, ele entra no evento

Mas la na função, se eu coloco this.id no Ie volta undefined... ja no Ff volta certinho

Eu precisava modificar os objetos na função pelo this... tem como??

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, não pegou o this.id.........

continou igual, e desse jeito no ff tb deu undefined...

 

document.getElementById(nohText.id).onclick = function(){			aaaaa();		}function aaaaa(){	alert('entrou... ' + this.id + '\n');}

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, exatamente do jeito q ta nesse codigo ai...eu quero recuperar o objeto pra mudar algumas propriedadesmas só de dar um alert(this.id) ja mostra undefined....sabe como resolver?

Compartilhar este post


Link para o post
Compartilhar em outros sites

galera, ainda não deu certo...

outra pergunta, como dou um addEventListener com uma variavel local de função como parametro???

 

function lalalala(){	var a = "imasters";	adicionaEvento(document.getElementById("obj"), function() { limpaNome(a); }, 'click');}

Ele não entende a variavel a como "imasters"....

Compartilhar este post


Link para o post
Compartilhar em outros sites

this.id..Se você estiver usando o this.id como na função que você mostrou, ele pode dar erro mesmo.. Ele entende o this.id como esse.id . . E se está na função, ele não vai saber de onde vem esse.id, ele vai se referir a qual id? . . Esse é um caso, existem outros que podem funcionar normal.. variavel local de função como parametroNão vi nada de errado, ele deve passar a variavel normal... fiz um teste aqui e funcionou sem problemas..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, sobre o this, ele sempre interpreta this.id como o id do objeto que chamou a função....Se eu deixo fixo os eventos ele funciona, a m***** é com o IE com o attachEvent.. mas this é sempre quem o chamou, pelo menos eu sempre entendi assim e funcionou... :wacko: agora adicionar um evento com uma variavel local como parâmetro deu certinho, eu tinha feito alguma caca e testei de novo e deu certo, valeu cara, mandou bemvaleu! :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessola tentei seguir o que comentaram mas não estou encontrando o problema. No Firefox funciona perfeitamente e no IE não. O que devo fazer? alguém pode me auxiliar... segue abaixo o código

que tenho.

 

Objetivo é buscar as peças de um determinado produto, mostrando elas em uma tabela. Quando

uma linha dessa tabela é selecionada, joga os valores da linha para os campos input que tenho

em um formulário.

 

Agradeço a ajuda e a atenção de todos.

 

Rogério

 

function selecionaItem(codpec, despec, qtdpec){						document.form_1.cod_peca.value = codpec;						document.form_1.den_peca.value = despec;						document.form_1.qtd_item.value = qtdpec;					}										function addEvent(obj, evType, fn){						if (obj.addEventListener)								obj.addEventListener(evType, fn, true)						if (obj.attachEvent)								obj.attachEvent("on"+evType, fn)					}										function selecionarPecas(num_prod) {						var ajax = new AJAX();						var params = '?pro='+num_prod;						ajax.url = 'xml_produto_peca.php' + params;						ajax.modo = 'X';						ajax.processaresultado = function(xmldoc) {								var nos = xmldoc.getElementsByTagName('peca');								var s = document.getElementById("div_pecas");								s.style.display = 'none';								var tbo = document.getElementById("tab_pecas");								var nm = tbo.rows.length;								for (i=0; i < nm; i++) {									tbo.deleteRow(0);								}								if(xmldoc.hasChildNodes()&&nos.length>0) {									for(var i=0;i<nos.length;i++) {										var no = nos[i];										var tr = document.createElement("tr");										for(var ii=0;ii<no.childNodes.length;ii++) {											var td = document.createElement("td");											if(ii==0) { var vlr0 = no.childNodes[ii].firstChild.nodeValue; }											if(ii==1) { var vlr1 = no.childNodes[ii].firstChild.nodeValue; }											if(ii==2) { var vlr2 = no.childNodes[ii].firstChild.nodeValue; }											if(no.childNodes[ii].firstChild.nodeValue=='-x-'){												var tx = document.createTextNode('');											}else{												var tx = document.createTextNode(no.childNodes[ii].firstChild.nodeValue);											}											td.appendChild(tx);											tr.appendChild(td);										}										addEvent(tr,"click", function() {											var vlr0 = this.getElementsByTagName("td")[0].innerHTML;											var vlr1 = this.getElementsByTagName("td")[1].innerHTML;											var vlr2 = this.getElementsByTagName("td")[2].innerHTML;											selecionaItem(vlr0, vlr1, vlr2);										});										tbo.appendChild(tr);									}								}								s.style.display = 'inline';							}							ajax.conectar();					 }

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.