如何在事件中更改JavaScript对象值

时间:2011-07-26 15:56:20

标签: javascript events object onload object-property

我有一个复杂的JavaScript情况。我创造了对象。这个对象动态地加载JS,CSS文件(参见load function)。我的问题是我想在加载目标文件时添加onload事件并更改该对象中的某些值。

我的对象构造函数:

function lib( type, url )
{
  //Varaibles
  this.URL = url;        //Files url
  this.TYPE = type;      //Files type( can by CSS or JS )
  this.READY = false;    //Files loaded status
  //Functions
  this.load = load;      //Method, which is called to start loading file
  this.status = status;  //Return READY status( false or true )
}

所以我正在尝试文件加载更改READY状态。我想在load函数中设置这个东西。现在我有这个加载功能:

function load()
{
    var object = this;
    switch ( this.TYPE.toUpperCase() )
    {
        case "JS" :
        {
            var script = document.createElement( "script" );
            script.setAttribute( "type", "text/javascript" );
            script.setAttribute( "src", this.URL );
            document.getElementsByTagName( "head" )[0].appendChild( script );


            if( navigator.appName == "Microsoft Internet Explorer" )
            {
                script.onreadystatechange = function () { this.READY = true; };
            } else {
                script.onload =function () { this.READY = true; };
            }

            break;
        }
        ( Here should be CSS loading... )
    }
}

所以伙计们,我需要查看我的代码,看看我做错了什么

2 个答案:

答案 0 :(得分:3)

当在脚本元素上下文中调用事件处理程序时,this关键字指向它,而是使用object.READY = true;

答案 1 :(得分:1)

如果你的问题是'readystatechange'事件,你可以尝试修复它:

script.onreadystatechange = function () {
    if (this.readyState == 4)
        object.READY = true;
};