[英]JavaScript Error: Object expected
我有一個HTML頁面,其中包含一個具有從右到左滾動文本的div的頁面; 以下JavaScript位於文檔的HEAD標簽之間。
function scroll(oid, iid) {
this.oCont = document.getElementById(oid);
this.ele = document.getElementById(iid);
this.width = this.ele.clientWidth;
this.n = this.oCont.clientWidth;
this.move = function() {
this.ele.style.left=this.n + "px"
this.n--
if(this.n<(-this.width)){this.n=this.oCont.clientWidth}
}
}
var vScroll
function setup() {
vScroll = new scroll("oScroll", "scroll");
setInterval("vScroll.move()", 20);
}
onload = function(){
setup()
}
$("scroll").hover(function() {
$("scroll").stop(true, false)
}, function(){
scroll();
});
scroll();
滾動文本效果很好; 但是我希望滾動在鼠標懸停時停止。 盡管當鼠標指針移到div上時文本不會停止滾動,但是我收到了一個JavaScript錯誤“ Object Object Expected”。 我是javascript的新手,也不知道我要怎么做。
任何幫助將不勝感激。
您的問題出在setInterval
。 您正在傳遞一個字符串! 這使它使用eval
! 這意味着代碼在全局范圍內運行,因此vScroll
不存在。
而是將一個函數傳遞給setInterval
:
setInterval(function(){
vScroll.move();
}, 20);
調用傳遞給setInterval
的函數時vScroll.move
“上下文”( this
值)設置為null
,因此無法將vScroll.move
直接傳遞給setTimeout
。 您可以,但是。 做:
setInterval(vScroll.move.bind(vScroll), 20);
但這並不適用於所有瀏覽器。
PS將字符串傳遞給setInterval
是不好的做法,您應該始終傳遞一個函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.