首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

关于javascript中的clearInterval停止不了的有关问题!

2012-02-11 
关于javascript中的clearInterval停止不了的问题!!!急~我崩溃了,为什么clearInterval之后,timer仍然在继续

关于javascript中的clearInterval停止不了的问题!!!急~
我崩溃了,为什么clearInterval之后,timer仍然在继续!!!????
关键在这一行。
我已经输出了,而且AdSwitch.thetimer_也是null,但是为什么autochange   仍然在继续???

达人求解!!!!!搞了半天了搞不订了!!!!!!

madmanahong@hotmail.com


/*   图片自动切换   */
autochange   :   function()   {

AdSwitch.traceinfo( "!change   timer "   +   AdSwitch.thetimer_   +   "times   =   "   +   (++test));

if   (!AdSwitch.thetimer_)   {
return;
}

///   为什么这个一直在继续?????AdSwitch.thetimer_已经是null了阿!!!!!!!!!!!!!!!!
}


==========================================
源代码:

<div   id= "testid "   style= "border:#000   1px   solid;width:600px;height:200px;background-color:orange ">
</div>

<div   id= "trace "   style= "width:800;height:30; "> </div>
<script   language= "javascript ">

var   test   =   0;
var   AdSwitch   =   {
version_   :   "1.0.0.0 ",
author_   :   "madmanahong ",
copyright_   :   "www.bj-lover.com ",
isload_   :   false,
xmlpath_   :   null,
xmlparser_   :   null,
allad_   :   Array(),
curidx_   :   0,
divid_   :   null,
btncx_   :   25,
btncy_   :   25,
btnsep_   :   5,
imgdivid_   :   "adswitch_img ",
timeinterval_   :   3000,
thetimer_   :   null,

/*   加载广告的div   */
load_xml   :   function(xmlpath)   {
xmlpath_   =   xmlpath;
if   (window.ActiveXObject)   {
this.xmlparser_   =   new   ActiveXObject( "Msxml2.DOMDocument ");
}   else   if   (document.implementation&&document.implementation.createDocument)   {
this.xmlparser_   =   document.implementation.createDocument( " ", " ",null);
}   else   {
this.xmlparser_   =   null;                                                                                                                                                        
return   false;
}

this.xmlparser_.resolveExternals   =   false;
this.xmlparser_.async   =   false;
this.xmlparser_.load(xmlpath);
if   (this.xmlparser_.parseError&&this.xmlparser_.parseError.errorCode)   {
alert(this.xmlparser_.parseError.reason);
return   false;
}

var   elements   =   this.xmlparser_.getElementsByTagName( "aditem ");
if   (elements)   {
for   (var   i=0;i <elements.length;++i)   {
var   ele   =   elements[i];

this.allad_[i]   =   new   Array();
for   (var   j=0;j <ele.childNodes.length;++j)   {
var   child   =   ele.childNodes[j];

/*   将所有的子元素节点都添加到列表内   1==ELEMENT_NODE   */


if   (child.nodeType==1)   {
var   text   =   child.firstChild;
this.allad_[i][child.nodeName]   =   text.nodeValue;
}
}
}
}   else   {
return   false;
}

return   true;
},

/*   得到广告的数组值   */
get_advalue   :   function(index,   attrname)   {
if   (index> =0&&index <this.allad_.length)   {
return   this.allad_[i][attrname];
}
return   null;
},


/*   设置广告数组值   */
set_advalue   :   function(index,   attrname,   attrvalue)   {
var   returnvalue   =   (this.allad_[index][attrname]==null)   ?   false   :   true;
this.allad_[index][attrname]   =   attrvalue;
return   returnvalue;
},

/*   宿主到一个div上面   */
hostdiv   :   function(divid)   {
this.divid_   =   divid;
var   divelement   =   document.getElementById(this.divid_);

if   (!divelement)
return   false;

if   (!this.creatediv(divelement))
return   false;

if   (!this.bindtimer())
return   false;

return   true;
},


creatediv   :   function(divelement)   {

/*   创建链接   */
var   hrefdiv   =   document.createElement( "a ");
hrefdiv.setAttribute( "href ",   this.allad_[this.curidx_][ "href "]);
if   (this.allad_[this.curidx_][ "alt "])
hrefdiv.setAttribute( "alt ",   this.allad_[this.curidx_][ "alt "]);
hrefdiv.style.display   =   "block ";
/*hrefdiv.style.width   =   getStyle(divelement,   "width ");
hrefdiv.style.height   =   getStyle(divelement,   "height ");*/
hrefdiv.style.width   =   divelement.style.width;
hrefdiv.style.height   =   divelement.style.height;

var   imgdiv   =   document.createElement( "img ");
imgdiv.setAttribute( "id ",   this.imgdivid_);
imgdiv.setAttribute( "src ",   this.allad_[this.curidx_][ "src "]);
imgdiv.setAttribute( "border ",   "0 ");
hrefdiv.appendChild(imgdiv);

var   btnbar   =   document.createElement( "div ");
btnbar.style.width   =   divelement.style.width;
btnbar.style.height   =   "30px ";

var   lefttext   =   document.createElement( "div ");
lefttext.style.lineHeight   =   "30px ";
lefttext.style.width   =   "120px ";
lefttext.style.styleFloat   =   "left ";
lefttext.style.cssFloat   =   "left ";
lefttext.style.marginLeft   =   "30px ";

if   (this.allad_[this.curidx_][ "intro "])   {
var   txt   =   document.createTextNode(
this.allad_[this.curidx_][ "intro "]);
lefttext.appendChild(txt);
}

var   rightbtn   =   document.createElement( "div ");
rightbtn.style.styleFloat   =   "right ";
rightbtn.style.cssFloat   =   "right ";

/*   创建指定数目的小按钮   */
var   btns   =   Array();


for   (var   i=0;i <this.allad_.length;++i)   {
btns[i]   =   document.createElement( "a ");
btns[i].style.display   =   "block ";
btns[i].style.styleFloat   =   "left ";
btns[i].style.cssFloat   =   "left ";
btns[i].style.marginTop   =   (30-this.btncy_);
btns[i].style.width   =   this.btncx_;
btns[i].style.heght   =   this.btncy_;
btns[i].style.marginLeft   =   this.btnsep_;
btns[i].style.textAlign   =   "center ";
btns[i].style.backgroundColor   =   "#ffc ";

btns[i].setAttribute( "href ",   "javascript:AdSwitch.changediv( "   +   i   +   "); ");

var   txt   =   document.createTextNode(i);
btns[i].appendChild(txt);
rightbtn.appendChild(btns[i]);
}

/*   最后一个按钮的右边要剩余一点空间   */
btns[this.allad_.length-1].style.marginRight   =   "20px ";

/*   添加清除行   */
var   cleardiv   =   document.createElement( "div ");
cleardiv.style.clear   =   "both ";
rightbtn.appendChild(cleardiv);

btnbar.appendChild(lefttext);
btnbar.appendChild(rightbtn);

divelement.appendChild(hrefdiv);
divelement.appendChild(btnbar);

return   true;
},

/*   切换广告框   */
changediv   :   function(idx)   {
if   (this.curidx_==idx)
return;

var   imgdiv   =   document.getElementById(this.imgdivid_);
if   (imgdiv&&(idx> =0&&idx <this.allad_.length))   {
imgdiv.setAttribute( "src ",   this.allad_[idx][ "src "]);
this.curidx_   =   idx;
}
},

/*   图片自动切换   */
autochange   :   function()   {

AdSwitch.traceinfo( "!change   timer "   +   AdSwitch.thetimer_   +   "times   =   "   +   (++test));

if   (!AdSwitch.thetimer_)   {
return;
}

var   nextid   =   this.curidx_;
if   (nextid==this.allad_.length-1)   {
nextid   =   0;
}   else   {
++nextid;
}

this.changediv(nextid);
},

/*   绑定计时器   */
bindtimer   :   function()   {
var   objdiv   =   document.getElementById(this.imgdivid_);
if   (objdiv)   {
/*   鼠标移动上去之后不再增加自动切换   */
objdiv.onmouseover   =   AdSwitch.cleartimer;

/*   鼠标移走之后要恢复timer   */
objdiv.onmouseout   =   AdSwitch.createtimer;

/*   创建第一个timer   */
this.createtimer();
return   true;
}

return   false;
},

/*   清除当前timer   */
cleartimer   :   function()   {
if   (AdSwitch.thetimer_)   {
AdSwitch.traceinfo( "!clear   timer "   +   AdSwitch.thetimer_);
window.clearInterval(AdSwitch.theTimer_);
AdSwitch.thetimer_   =   null;
}
},

/*   创建新的timer   */  
createtimer   :   function()   {
if   (!AdSwitch.thetimer_)   {
AdSwitch.thetimer_   =   window.setInterval( "AdSwitch.autochange() ",   AdSwitch.timeinterval_);


AdSwitch.traceinfo( "!set   timer "   +   AdSwitch.thetimer_);
}
},

/*   test   */
testfunction   :   function()   {

var   ar   =   new   Array();
for   (var   i=0;i <5;++i)   {
ar[i]   =   new   Array();

for   (var   j=0;j <3;++j)   {

ar[i][   "test "+j   ]   =   "test "   +   j;
}

}

alert(   ar[2][ "test2 "]   );

},

debuginfo   :   function(element)   {
alert( "node   type   =   "   +   element.nodeType   +   '\n '   +
"node   name   =   "   +   element.nodeName   +   '\n '   +
"node   value   =   "   +   element.nodeValue);
},

traceinfo   :   function(info)   {
var   out   =   document.getElementById( "trace ");
out.innerHTML   =   info;
}

};


window.onload   =   function()   {
/*AdSwitch.testfunction();*/
AdSwitch.load_xml( "test.xml ");
AdSwitch.hostdiv( "testid ");
}

</script>


[解决办法]
window.clearInterval(AdSwitch.theTimer_);

AdSwitch.thetimer_ = window.setInterval( "AdSwitch.autochange() ", AdSwitch.timeinterval_);


这就是问题所在?拼错大小写?

如果就是这个原因,楼主应该面壁了~~~我只花了2分钟就找到错误了~~~

热点排行
Bad Request.