[ kukipei @ 29.08.2009. 12:06 ] @
Pozdrav svima,

Da li neko moze da mi kaze u cemu gresim.
Ovo je kod koji koristim:
Code:
// JavaScript Document
var IFrameDropDown = {
    topLeftX : "0px",
    topLeftY : "0px",
    width : "100px",
    height : "200px",
    url : "mvm.php",
    inputField : Object,
    init :     function()
            {
                this.inputField = document.getElementById("whiteplayer");
                this.addEvents(this.inputField, "change");
            },
    addEvents : function(obj, e)
                {
                    if(window.addEventListener){ // Mozilla, Netscape, Firefox
                        obj.addEventListener(e, this.alerter, false);
                    } else { // IE
                        obj.attachEvent("on" + e, this.alerter);
                    }
                },
    alerter :function()
                {
                    alert("sdf");
                },
    setTopLeftX:function(x)
                {
                    this.topLeftX = x + "px";
                },
    setTopLeftY:function(y)
                {
                    this.topLeftY = y + "px";
                }
};
window.onload = IFrameDropDown.init;


Dobijam sledecu poruku o gresci:

this.addEvents is not a function

u liniji

this.addEvents(this.inputField, "change");


Kada u toj liniji umesto this stavim IFrameDropDown, sve radi dobro.

Zar ne bi trebalo da radi i sa this.
Hvala unapred
[ Aleksandar Ružičić @ 29.08.2009. 19:11 ] @
Ne, ne bi trebalo. Javascript nije object-oriented, vec prototype-based jezik.
Postoje frejmvorci koji pokusavaju da emuliraju object-oriented stil programiranja u javascriptu (od kojih je najpoznatiji Prototype), ali nije moguce od javascripta napraviti objektno orijentisan jezik u potpunosti (bar dok ne zazivi JavaScript 2.0), sto je po meni GoodThing!

elem, evo kako bi tvoj kod trebalo napisati da radi ono sto zelis:
Code:

function IFrameDropDown() {
    this.topLeftX = "0px";
    this.topLeftY = "0px";
    this.width = "100px";
    this.height = "200px";
    this.url = "mvm.php";
    this.inputField = Object;

    this.init  = function() {
         this.inputField = document.getElementById("whiteplayer");
         this.addEvents(this.inputField, "change");
    };
    this.addEvents = function(obj, e) {
         if(window.addEventListener){ // Mozilla, Netscape, Firefox
             obj.addEventListener(e, this.alerter, false);
         } else { // IE
             obj.attachEvent("on" + e, this.alerter);
         }
    };
    this.alerter = function() {
         alert("sdf");
    };
    this.setTopLeftX = function(x) {
         this.topLeftX = x + "px";
    };
    this.setTopLeftY = function(y) {
          this.topLeftY = y + "px";
    };
};

var iframedd = new IFrameDropDown;
window.onload = function() {
     iframedd.init();
}
[ kukipei @ 29.08.2009. 22:12 ] @
Hvala,

ja sam ga ovako resio:

Code:
// JavaScript Document
var IFrameDropDown = {
    topLeftX : "0px",
    topLeftY : "0px",
    width : "100px",
    height : "200px",
    url : "mvm.php",
    inputField : Object,
    addEvents : function (obj, e)
                {
                    if(window.addEventListener){ // Mozilla, Netscape, Firefox
                        obj.addEventListener(e, this.alerter, false);
                    } else { // IE
                        obj.attachEvent("on" + e, this.alerter);
                    }
                },
    alerter :function ()
                {
                    alert("sdf");
                },
    init :     function ()
            {
                alert(this);
                this.inputField = document.getElementById("whiteplayer");
                this.addEvents(this.inputField, "change");
            },
    setTopLeftX:function (x)
                {
                    this.topLeftX = x + "px";
                },
    setTopLeftY:function (y)
                {
                    this.topLeftY = y + "px";
                }
};
function pageLoader() {
    IFrameDropDown.init();
}

window.onload = pageLoader;


i sad lepo radi
[ Aleksandar Ružičić @ 29.08.2009. 23:19 ] @
to je ok resenje ali mozes da imas samo jednu instancu IFrameDropDown "klase", ako bi koristio constructor funkciju kao sto sam ja dao primer, onda bi mogao da imas koliko god hoces nezavisnih instanci "klase".
[ kukipei @ 30.08.2009. 07:41 ] @
da, da jasno mi je to.