Szerző Téma: Objektumok  (Megtekintve 2838 alkalommal)

0 Felhasználó és 1 vendég van a témában

Nem elérhető Rimelek

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 8.942
    • rimelek.hu
Re: Objektumok
« Válasz #23 Dátum: 2010. szeptember 09., 22:13:19 »
csak annyit tesz, hogy meghívja a pos függvényt. Igazából nem értem, hogy ezért miért változik meg a this.
A szam = 2; sem hívja meg a 2-est. Ez csak egyszerű értékadás. De nem magyarázom. MadBence megtette helyettem :)
Egyszerűen létezem, és lézengek a Földön,
mint idióta szellem, kinek kastélya a börtön.

Nem elérhető <madbence />

  • Teljes tag
  • ***
  • Hozzászólások: 1.631
  • Twitterista :)
    • Blogom
Re: Objektumok
« Válasz #22 Dátum: 2010. szeptember 09., 20:48:02 »
2 sort köll átírni:
   $("#"+info.mcontainer).css({
        "position":"fixed",
        "z-index":"10",
        "left":cursor.x+"px",
        "top":cursor.y+"px"
    });
Ezt erre: (ha az egérre rakod a dobozt, még jóhogy lefut az onmouseout, sőt, ha gyorsan mozgatod, még így is ráfuthat. igaziból erre csak a IE tud jó megoldást onmouseenter, onmouseleave)
   $("#"+info.mcontainer).css({
        "position":"fixed",
        "z-index":"10",
        "left":(cursor.x+10)+"px",
        "top":(cursor.y+10)+"px"
    });
Aztán ugye itt meg azért lesz a this a document, mert csak. te azt akartad írni, hogy ha mozgatod az egeret, akkor fusson le az info-n a pos(e) függvény. Node ez nem azt jelenti. a document.onmousemove legyen maga az info.pos függvény (mintha csak az info.pos helyére beírnád a függvény törzsét).
Ha beburkolod, máris jól fogja tudni:
   document.onmousemove=info.pos;ezt beburkolod, így a this már az info lesz :)
   document.onmousemove=function(e){info.pos(e);};
mi chuck norris email címe? gmail@chucknorris.com
Blog: napszemuvegbe.tumblr.com
Twitter: twitter.com/madbence

Nem elérhető Ati

  • Felhasználó
  • Hozzászólások: 48
Re: Objektumok
« Válasz #21 Dátum: 2010. szeptember 09., 15:59:04 »
 :wacko: :wacko: Az elején én is gondoltam rá, hogy a document.onmousemove miatt, mert csak ebben külömbözött a pos metódus a többitől, de arra gondoltam, hogy a document.onmousemove csak annyit tesz, hogy meghívja a pos függvényt. Igazából nem értem, hogy ezért miért változik meg a this.

Nem elérhető Rimelek

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 8.942
    • rimelek.hu
Re: Objektumok
« Válasz #20 Dátum: 2010. szeptember 09., 12:52:55 »
Bevallom, én is gyakran keverem hogy mi hogy is van. Ilyen felépítéssel tényleg elérhetők a tulajdonságok this-el is. Viszont a pos metódust átadtad a document.onmousemove -nak. És akkor a this már gondolom a document objektumra mutat. Most nincs időm jobban elemezni mit miért. Talán majd este. 
Egyszerűen létezem, és lézengek a Földön,
mint idióta szellem, kinek kastélya a börtön.

Nem elérhető Ati

  • Felhasználó
  • Hozzászólások: 48
Re: Objektumok
« Válasz #19 Dátum: 2010. szeptember 09., 09:02:09 »
 :D Ezt nem tudtam :'(, azt hittem, hogy egy objektum metódusában a this magára az objektumra hivatkozik. De írtam js ben egy szerkesztőt, és nem értem, hogy abban a this-el hivatkozok az objektum változóira és müködik.

Pl.
Kód: Javascript
  1. var editor=new Object();
  2. editor.textarea_id="editor_input";
  3. editor.codes=new Array();
  4.  
  5. editor.codes[0]=["Kövér","KEP","[b]","[/b]"];
  6. editor.codes[1]=["Dölt","KEP","[i]","[/i]"];
  7. editor.codes[2]=["Aláhúzott","KEP","[u]","[/u]"];
  8. editor.codes[3]=["Jobbra igazít","KEP","[left]","[/left]"];
  9. editor.codes[4]=["Középre igazít","KEP","[center]","[/center]"];
  10. editor.codes[5]=["Balra igazít","KEP","[right]","[/right]"];
  11. editor.codes[6]=["NEV","KEP","[KEZDO_KOD]","[/ZARO_KOD]"];
  12. editor.codes[7]=["NEV","KEP","[KEZDO_KOD]","[/ZARO_KOD]"];
  13. editor.codes[8]=["NEV","KEP","[KEZDO_KOD]","[/ZARO_KOD]"];
  14.  
  15. editor.load=function(options)
  16. {
  17.     var set={
  18.         div:options.div,
  19.         rows:(options.rows ? options.rows : 8),
  20.         cols:(options.cols ? options.cols : 64),
  21.         class:(options.classs ? optons.classs : "editor"),
  22.         menuClass:(options.menuClass ? options.menuClass : "editor_menu"),
  23.         menuItemClass:(options.menuItemClass ? options.menuItemClass : "editor_menu_item")
  24.     };
  25.     var menu="", input="";
  26.    
  27.     menu+="<div class=\""+set.menuClass+"\">";
  28.     for(var i=0;i<this.codes.length;i++){
  29.         menu+="<img src='"+this.codes[i][1]+"' class='"+set.menuItemClass+"' alt='"+this.codes[i][0]+"' ";
  30.         menu+="onclick='editor.insert(\""+this.codes[i][2]+"\", \""+this.codes[i][3]+"\");' />";
  31.     }
  32.     menu+="</div>";
  33.    
  34.     input+="<textarea id='"+this.textarea_id+"' rows='"+set.rows+"' cols='"+set.cols+"' class='"+set.class+"'>";
  35.     input+="</textarea>"
  36.    
  37.     document.getElementById(set.div).innerHTML=menu+input;
  38.     return true;
  39. }
  40.  

Ebben a részben miért megy rendesen? Rendesen elkészíti a szerkesztőt, peddig a this akkor a metóduson belül önmagára hivatkozik, vagyis nem az objektum változóit kellene elérje. Miért van ez?? :blub: :-\

Nem elérhető Rimelek

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 8.942
    • rimelek.hu
Re: Objektumok
« Válasz #18 Dátum: 2010. szeptember 08., 22:38:10 »
Szia

this-el az adott függvényre hivatkozhatsz mindig. Így az open és close metódusokban is rosszra hivatkozol. Mert azoknak nincs olyan tulajdonsága. Csak az info-nak. A pos metódusban info-ként hivatkoztál az objektumra, nem this-el. Helyesen tetted, de mivel máshol nem, ezért nem is változik az értéke.
Egyszerűen létezem, és lézengek a Földön,
mint idióta szellem, kinek kastélya a börtön.

Nem elérhető Ati

  • Felhasználó
  • Hozzászólások: 48
Re: Objektumok
« Válasz #17 Dátum: 2010. szeptember 08., 11:03:27 »
Sziasztok,

készítettem egy objektumot, ami annyit kellene csináljon, hogy-ha az egérrel a képre megyek akkor kis szövegmezőbe megjeleniti a kép alt-tartalmát, és ha a képen belül viszem az egeret akkor a szöveg doboz követi.

A javascript rész:

Kód: Javascript
  1. var info=new Object();
  2.  
  3. info.opened=false;
  4. info.mcontainer="infobox";
  5. info.container="infocontent";
  6.  
  7. info.pos=function(ev)
  8. {
  9.     //tesztel
  10.     //document.getElementById("run").innerHTML+="info.pos:"+this.opened+"<br />";
  11.    
  12.     if (!info.opened) return true;
  13.     ev=ev||window.Event;
  14.     var cursor={x:0,y:0};
  15.     if (ev.pageX || ev.pageY){
  16.         cursor.x=ev.pageX;
  17.         cursor.y=ev.pageY;
  18.     }else{
  19.         cursor.x=ev.clientX+(document.documentElement.scrollLeft||document.body.scrollLeft)-document.documentElement.clientLeft;
  20.         cursor.y=ev.clientY+(document.documentElement.scrollTop||document.body.scrollTop)-document.documentElement.clientTop;
  21.     }
  22.     $("#"+info.mcontainer).css({
  23.         "position":"fixed",
  24.         "z-index":"10",
  25.         "left":cursor.x+"px",
  26.         "top":cursor.y+"px"
  27.     });
  28.     return true;
  29. }
  30.  
  31. info.open=function(object)
  32. {
  33.     //tesztel
  34.     document.getElementById("run").innerHTML+="open: "+this.opened+"<br />";
  35.    
  36.     if (this.opened) return true;
  37.     document.getElementById(this.container).innerHTML=object.alt;
  38.     this.opened=true;
  39.     $("#"+this.mcontainer).fadeIn("slow");
  40.     return true;
  41. }
  42.  
  43. info.close=function()
  44. {
  45.     if (!this.opened) return true;
  46.     $("#"+this.mcontainer).fadeOut("slow");
  47.     document.getElementById(this.container).innerHTML="";
  48.     this.opened=false;
  49.     return true;
  50. }
  51. function init()
  52. {
  53.     if (window.Event){
  54.         document.captureEvents(Event.MOUSEMOVE);
  55.     }
  56.     document.onmousemove=info.pos;
  57. }
  58. window.onload=init;
  59.  

HTML rész:

Kód: HTML
  1. <img src="kep.jpg" width="100px" height="100px" onMouseOver="info.open(this);" onMouseOut="info.close();" alt="Ez valami"  />
  2.         <div id="infobox"><div id="infocontent"></div></div>
  3.         <div id="run"></div>
  4.  

Szóval az lenne az egyik problémám, hogy az open függvényben a this.opened, meg this.mcontainer rendes müködik, viszont a pos függvényben a this.opened és this.mcontainer is undefined az értéke, ha info.opened-el hivatkozok akkor viszont jó. Miért csinálja ezt? És a ha az open függvényben a opened értékét igazra álítom akkor is a pos függvényben marad az alapértelmezett, tehát nem változik. Ezért a szövegdoboz követi az egeret csak villog. Mi lehet a probléma??

Nem elérhető Keveqiah

  • Globális moderátor
  • Teljes tag
  • *****
  • Hozzászólások: 2.332
  • Kisb
    • Keveqiah
Re: Objektumok
« Válasz #16 Dátum: 2010. szeptember 02., 20:58:52 »
Egy kis segítség kellene. :)

Az oldal betöltődése során nincs hiba. Az alap változók is szépen behelyettesítődnek, viszont, ha kattintanak, ezt kapom.

Idézet
Hiba: this.CreateFrame is not a function
Forrásfájl: http://kurl.host/assets/js/api.js
Sor: 62

sztornó.. elhamarkodott kérdés. :/
« Utoljára szerkesztve: 2010. szeptember 02., 21:49:30 írta Suttogó »
"Gonosz vagyok. Ez ugyebár nem hit dolga."
"Egy ember halála tragédia, ezrek halála statisztika."

Nem elérhető Rimelek

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 8.942
    • rimelek.hu
Re: Objektumok
« Válasz #15 Dátum: 2010. május 15., 16:55:55 »
Előnyös, ha nem adod ugyanazt a nevet a változódnak és a függvénynek. Mert felülírod a függvényt saját példányával. Teljes káosz.
Egyszerűen létezem, és lézengek a Földön,
mint idióta szellem, kinek kastélya a börtön.

Nem elérhető Satya

  • Teljes tag
  • ***
  • Hozzászólások: 1.155
Re: Objektumok
« Válasz #14 Dátum: 2010. május 15., 16:39:47 »
Hehe, alig pont egy éve írtam ide utoljára. Hogy repül az idő. :dontgetit:

Na, de az van, hogy egy elem szelektor osztályt szeretnék létrehozni ami a konstruktorban szelektál, ezt annak alapján írtam meg ahogyan Warner írta régebben Kisgabónak, de az sem oldotta meg a problémám, anonymus osztály maradt az element. :wacko:

H.üzenet:
Idézet
element is not a constructor

Kód:
Kód: Javascript
  1. function element(options)
  2. {
  3.         //Ellenőrizzük, hogy csak az elem azonosítója vagy csak az osztályneve lett e átadva.
  4.         if(typeof(options.id) != "undefined" && typeof(options.clss) == "undefined")
  5.         {
  6.                 //Eltároljuk az elem azonosítóját késöbbi felhasználására.
  7.                 this.id = options.id;
  8.                 //Ellenőrizzük, hogy létezik e az elem.
  9.                 if(typeof(document.getElementById(this.id)) != "undefined")
  10.                 {
  11.                 }
  12.                 else
  13.                 {
  14.                         //Figyelmeztetjük a felhasználót, hogy nem létezik az elem.
  15.                         alert("Hiba!/nNem létezik ezzel az azonosítóval (" + this.id + ") elem.");
  16.                 }
  17.         }
  18. }
  19.  
  20. window.onclick = function()
  21. {
  22.         var element = new element({id: "a"});
  23. }
  24.  
A hiba csak akkor áll fent, ha valamilyen eseményt adok a példányosításhoz. Az esemény ahhoz kell, hogy addigra létezzen az a bizonyos elem.
Internet Explorer - legjobb böngésző egy másik böngésző letöltésére.

Nem elérhető Satya

  • Teljes tag
  • ***
  • Hozzászólások: 1.155
Re: Objektumok
« Válasz #13 Dátum: 2009. május 23., 08:46:35 »
Zsír. :D

Úgy kerül AJAX-ba, hogy egy hiperszuper AJAX-os cuccon dolgozom és ott estem a hibába. Ezért írtam reflexszerűen AJAX-ba.
Internet Explorer - legjobb böngésző egy másik böngésző letöltésére.

Nem elérhető Rimelek

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 8.942
    • rimelek.hu
Re: AJAX
« Válasz #12 Dátum: 2009. május 22., 23:02:47 »
fordítok neked: missing kettőspont after property id

na jó mégjobban :D
hiányzik a kettőspont a tulajdonság azonosító után

Ugyebár a prototype egy objektum. A { és } jelek között egy tömb jön létre. (A tömb is objektum)
Az asszociatív tömbök így épülnek fel:

Kód: Javascript
  1. var tomb = {
  2.     azonosito: ertek,
  3.     azonosito2: ertek2
  4. }
Persze lehetne string is az azonosító és az érték is. de itt oop-nél a változónév lesz a kulcs. És persze a var se kell.


De hogy ez hogy került az AJAX témába azt nem tudom  :confused:
Egyszerűen létezem, és lézengek a Földön,
mint idióta szellem, kinek kastélya a börtön.

Nem elérhető Satya

  • Teljes tag
  • ***
  • Hozzászólások: 1.155
Re: AJAX
« Válasz #11 Dátum: 2009. május 22., 18:46:15 »
Hali.

Mai nap kedvem támadt egy kicsit objektum orientálódni JS-ben. Két féle módszerrel "játszadoztam" és hát tapasztalataim alapján a második módszerem nem működik. Egy hibát kaptam, mégpedig azt, hogy hiányzik a tulajdonság azonosító? :shock: Mi az tulajdonság azonosító?

Kód: Javascript
  1. function a(){
  2. }
  3.  
  4. a.prototype = {
  5.       var b = 'c';
  6. }
  7.  

Azt amit akartam azt sikerült megoldanom, de kíváncsi lennék, hogy ez miért nem jó. A friss könyvemben egyik példában használnak ilyet is.
Internet Explorer - legjobb böngésző egy másik böngésző letöltésére.

Nem elérhető <madbence />

  • Teljes tag
  • ***
  • Hozzászólások: 1.631
  • Twitterista :)
    • Blogom
Re: Objektumok
« Válasz #10 Dátum: 2009. január 26., 19:26:18 »
Hoppá tényleg :), azzal majd később szórakozok...
Az a baj, hogy a this.xmlhttp eleve undefined  :confused:. I'm confused... nem értem.

Áháháááááá!  :D megvan!
this.xmlhttp.onreadystatechange=this._ReadyStateChange;Ebben a sorban rakom hozzá a saját kezelőmet. Csakhogy a this._ReadyStateChange-ben a this már az eredeti this.xmlhttp-re fog hivatkozni

Nem  :-\, sajnos így sem működik, de már hibát sem ad. Azt mondja a this-nek nincs is semmilyen tulajdonsága.

Na hál istennek müxik :) Megizzasztott
Kód: Javascript
  1. var Rss={
  2.         Init:function()
  3.         {
  4.                 this.xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  5.         },
  6.         GetFeed:function(url, callback)
  7.         {
  8.                 var self=this;
  9.                 this.xmlhttp.open("GET", url, true);
  10.                 this.xmlhttp.onreadystatechange=function()
  11.                 {
  12.                         self._ReadyStateChange(callback);
  13.                 }
  14.                 this.xmlhttp.send(null);
  15.         },
  16.         _ReadyStateChange:function(callback)
  17.         {
  18.                 if(this.xmlhttp.readyState == 4)
  19.                 {
  20.                         if(this.xmlhttp.status == 200)
  21.                         {
  22.                                 callback(this.xmlhttp.responseText);   
  23.                         }
  24.                         else
  25.                         {
  26.                                 Debug.Trace(this.xmlhttp.getAllResponseHeaders());
  27.                         }
  28.                 }
  29.         }
  30. }
  31. Rss.Init();
  32. Rss.GetFeed("http://madbence.freeblog.hu/feed", function(bar){Debug.Trace(bar);});
« Utoljára szerkesztve: 2009. január 26., 19:53:23 írta MadBence »
mi chuck norris email címe? gmail@chucknorris.com
Blog: napszemuvegbe.tumblr.com
Twitter: twitter.com/madbence

Elérhető Warner

  • Adminisztrátor
  • Őstag
  • *****
  • Hozzászólások: 6.438
    • CodeNet
Re: Objektumok
« Válasz #9 Dátum: 2009. január 26., 19:17:39 »
A callbacket elhagyod a GetFeed()-ben, de azt mondod már a readyState-nél elakad. Írasd ki milyen propertyjei vannak a this.xmlhttp-nek.