簡體   English   中英

JavaScript錯誤:預期對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM