读书人

新手 js 有关问题 搞了一天一夜了

发布时间: 2012-04-23 13:17:38 作者: rapoo

新手 js 问题 搞了一天一夜了。
我是一个新手,刚学js来着,看一本 深入浅出js 的书之后,就换一种和书上不同的方式来创建对象,搞了一天一夜了,直到现在,都还是没有头绪。请各位大神帮忙。

感激涕零啊

积分实在不多,望见谅。

JScript code
function ges( p ){        this.pos = p;//container;    this.currentClass='current';    this.currentLink = null;};    ges.prototype={    init:function(){        if( !document.getElementById || !document.createTextNode ){            return;                    }                var navId = document.getElementById( this.pos );                if( !navId ){            return;        }                var navLinks = navId.getElementsByTagName( 'a' );        alert( navLinks.length );            for( var i=0; i<navLinks.length-1; i++ ){                        if( this.currentLink != null ){                this.currentLink = navLinks[1];            }                DOMHelp.addEvent( navLinks[i], 'click', this.getTarget, false );        }                if( !this.currentLink ){            this.currentLink = navLinks[1];            this.showBg( this.currentLink );        }    },    getTarget:function( e ){        var tar = DOMHelp.getTarget( e );        this.showBg( tar );    },            showBg:function( o ){        DOMHelp.cssjs( 'remove', this.currentLink, ges.currentClass );        DOMHelp.cssjs( 'add', o, this.currentClass );        this.currentLink = o;    }};



在网页中的代码是:
HTML code
        <script type="text/javascript">        var n = new ges( 'nav' );        DOMHelp.addEvent( window, 'load', n.init, false );    </script>



网页中的 ‘nav’参数形同虚设,没有作用。。
当把js 中的 this.pos 换成 'nav' 却出现 this.showBg is not function.!!!

高手们帮帮忙


[解决办法]
自己学会单步调试
[解决办法]
self = this;
init:function(){
if( !document.getElementById || !document.createTextNode ){
return;
}

var navId = document.getElementById( this.pos );

if( !navId ){
return;
}

var navLinks = navId.getElementsByTagName( 'a' );
alert( navLinks.length );
for( var i=0; i<navLinks.length-1; i++ ){

if( this.currentLink != null ){
this.currentLink = navLinks[1];
}
DOMHelp.addEvent( navLinks[i], 'click', this.getTarget, false );
}

if( !this.currentLink ){
this.currentLink = navLinks[1];
this.showBg( this.currentLink );
}
},


把init的所有this换成self
[解决办法]
js中的this在不同函数环境中指向不同,在没有任何的函数中的this是全局内容,this会作用域的不同而变化的

读书人网 >JavaScript

热点推荐