Aktivacija eventa na elementu koji je ubačen js-om

Aktivacija eventa na elementu koji je ubačen js-om

offline
  • Pridružio: 22 Jun 2006
  • Poruke: 409

Koliko nesrećan naslov, toliko i moje pitanje. Mr. Green

Naime, imam stranicu, na koju želim da "nakačim" svoju skriptu putem Greasemonkeya. Problem je što je ta stranica dinamička, i ono što ja želim da menjam se ne loaduje odmah:

// skripta za zamenu function changeTheWorld( idRef, val ) {  // da li browser podrzava ovu fju  if(!document.getElementById ) return;  // trazenje inputa  var inputobj = document.getElementById( idRef );  if( inputobj ) {  // update  inputobj.value = val;  } } // kacenje svih eventova function attachBehaviors() {  // da li browser podrzava ovu fju  if(!document.getElementById ) return;  // trazenje linka koji menja input  var linkObj = document.getElementById( 'link' );  if( linkObj ) {  // kacenje onclick eventa  linkObj.onclick = function() {   changeTheWorld( 'where', 'Ovo se ispisuje u input field' );  };  }   var mojdiv = document.getElementById("wi-where"); mojdiv.innerHTML = '<input type="text" name="location" id="where" value=""/><a id="link">kad se ovo klikne trebalo bi da se zameni tekst u inputu</a>' } // ovo tera browser da pozove sve kad se ucita prozor, u cemu i mislim da je problem, jer js injectuje ovo naknadno window.onload = function() {  attachBehaviors(); };

i sa ovim ja lepo dobijem input u tom divu i link pored, ali kad ga kliknem u inputu se ne pojavi tekst 'Ovo se ispisuje u input field', a kad u html-u napravim (statički) <input type="text" name="location" id="where" value=""/><a id="link">kad se ovo klikne trebalo bi da se zameni tekst u inputu</a>

bez ove dve linije u skripti

var mojdiv = document.getElementById("wi-where"); mojdiv.innerHTML = '<input type="text" name="location" id="where" value=""/><a id="link">kad se ovo klikne trebalo bi da se zameni tekst u inputu</a>'

onda sve lepo radi, tako da je problem do "kačenja" i aktiviranja eventa, samo što ja ne znam da ga rešim, niti znam da li je moguće rešiti ga, ali se nadam da jeste. Kako da nateram ovo da proradi? Sad



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Evo ukratko
function changeTheWorld(idRef, val) {    document.getElementById(idRef).value = val; } function attachBehaviors(sIdevent, sIdWhere, sText) {    document.getElementById(sIdevent).onclick = function(){changeTheWorld(sIdWhere, sText);}; }   function writeContent(){    document.getElementById("wi-where").innerHTML = '<input type="text" name="location" id="where" value=""/><a id="link">kad se ovo klikne trebalo bi da se zameni tekst u inputu</a>' } window.onload = function() {    writeContent();    attachBehaviors('link', 'where', 'Ovo se ispisuje u input field'); };



offline
  • Pridružio: 04 Sep 2003
  • Poruke: 24135
  • Gde živiš: Wien

Probaj
function onClick () { changeTheWorld( 'where', 'Ovo se ispisuje u input field' ); } linkObj.onClick = new onClick;

Ovako je mnogo ruzan kod, ali vidi za pocetak da li radi uopste.

Dopuna: 15 Mar 2009 0:42

@igor86
Moze li to da radi bez instanciranja funkcije (new) ?

offline
  • Pridružio: 22 Jun 2006
  • Poruke: 409

@ igor86 & bobby

Hvala Vam na pomoći, u međuvremenu sam došao do rešenja, doduše Igorovo je mnogo kvalitetnije od mog. Smile

Još jednom, hvala Vam. Smile

offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
  • Pridružio: 24 Maj 2006
  • Poruke: 1633

Ne znam sta ti je konkretna namjena, ali to se moze jos sazetije napisati,
recimo

function atE(oSender, sIdWhere, sText) {    oSender.onclick = function(){document.getElementById(sIdWhere).value = sText}; }

i u samo u link stavis recimo

onmouseover="atE(this, 'idWhere', 'Init value');"

naravno mora da radi za oba slucaja, mislim i dinamicki kada se generise content;

Ko je trenutno na forumu
 

Ukupno su 924 korisnika na forumu :: 36 registrovanih, 6 sakrivenih i 882 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., aleksmajstor, bojankrstc, Boris90, cavatina, comi_pfc, dankisha, Dimitrije Paunovic, djboj, Djokislav, doktor1964, Dorcolac, Dovla, Fog of War, HrcAk47, ILGromovnik, jaeger, Još malo pa deda, Kubovac, ladro, lelemud, Mika_NS, Mixelotti, nikoladim, ozzy, Parker, pedja.st, pein, Pohovani_00, raptorsi, Srle993, trundle, vathra, VP6919, Zimbabwe, žeks62