Igrice i igre

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

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

Idi na vrh
offline
  • Pridružio: 22 Jun 2006
  • Poruke: 409
  • Blog: My playlist
Uloguj se preko Facebooka i postavi pitanje:
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.
Idi na vrh
offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
Uloguj se preko Facebooka i postavi pitanje:
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');
};


Idi na vrh
offline
Uloguj se preko Facebooka i postavi pitanje:
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) ?
Idi na vrh
offline
  • Pridružio: 22 Jun 2006
  • Poruke: 409
  • Blog: My playlist
Uloguj se preko Facebooka i postavi pitanje:
@ 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
Idi na vrh
offline
  • igor86  Male
  • Stručni saradnik
    Web programiranje
Uloguj se preko Facebooka i postavi pitanje:
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;

Potreban je samo minut da se registrujete - da biste učestvovali u diskusiji:
Izaberite vaše korisničko ime [username] :
Vaša email adresa je [email] : Email adresa mora biti tačna!
Ukucajte željenu šifru [password] :
Ukucajte šifru ponovo [password again] :
Jezik [language] :




Ili se jednostavno uloguj preko Facebook-a:
Ko je trenutno na forumu
 

Ukupno su 363 korisnika na forumu :: 46 registrovanih, 4 sakrivenih i 313 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 1311 - dana 15 Nov 2012 21:40

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Aleksandar736, aramis s, argus, bobaivkovic, Bojan Dimitrijevic, Brat Srbin, CheefCoach, Chuck Norris, Darko Papic, dekao, Dicus, Djox97, djuro605, drgnk, EOD, gloyer, ithacking, ivance95, kaivmair, kec1111, king maci, knell, laki_bb, Lošmi, mean_machine, Mercury2, mesec90, MilanNS2, Miroslav Vujic, mpman, MrZiM windows7, Patak Daca, pcelica.m, pein, rade012, rapha, S-lash, sake44, Shomy, shone34, snik2, Toni, trutcina, vasa.93, Vlada78, Žan Klod vam dam
VPS