JavaScript“null或not an object”错误

时间:2010-09-28 08:22:35

标签: javascript dom

我正在运行下面的JavaScript,在我网站的横幅上放置水平滚动文字。它适用于一台服务器而不是另一台。我收到以下错误:

  

错误:'this.mqo'为null或不是对象

JavaScript:

function start() {
    new mq('m1');
/* new mq('m2');
    */
    mqRotate(mqr); // must come last
}
window.onload = start;

// Continuous Text Marquee
// permission to use this Javascript on your web page is granted
// provided that all of the code below in this script (including these
// comments) is used without any alteration

function objWidth(obj) {
    if (obj.offsetWidth) return obj.offsetWidth;
    if (obj.clip) return obj.clip.width;
    return 0;
}
var mqr = [];

function mq(id) {
    this.mqo = document.getElementById(id);
    var wid = objWidth(this.mqo.getElementsByTagName('span')[0]) + 5;
    var fulwid = objWidth(this.mqo);
    var txt = this.mqo.getElementsByTagName('span')[0].innerHTML;
    this.mqo.innerHTML = '';
    var heit = this.mqo.style.height;
    this.mqo.onmouseout = function () {
        mqRotate(mqr);
    };
    this.mqo.onmouseover = function () {
        clearTimeout(mqr[0].TO);
    };
    this.mqo.ary = [];
    var maxw = Math.ceil(fulwid / wid) + 1;
    for (var i = 0; i < maxw; i++) {
        this.mqo.ary[i] = document.createElement('div');
        this.mqo.ary[i].innerHTML = txt;
        this.mqo.ary[i].style.position = 'absolute';
        this.mqo.ary[i].style.left = (wid * i) + 'px';
        this.mqo.ary[i].style.width = wid + 'px';
        this.mqo.ary[i].style.height = heit;
        this.mqo.appendChild(this.mqo.ary[i]);
    }
    mqr.push(this.mqo);
}
function mqRotate(mqr) {
    if (!mqr) return;
    for (var j = mqr.length - 1; j > -1; j--) {
        maxa = mqr[j].ary.length;
        for (var i = 0; i < maxa; i++) {
            var x = mqr[j].ary[i].style;
            x.left = (parseInt(x.left, 10) - 1) + 'px';
        }
        var y = mqr[j].ary[0].style;
        if (parseInt(y.left, 10) + parseInt(y.width, 10) < 0) {
            var z = mqr[j].ary.shift();
            z.style.left = (parseInt(z.style.left) + parseInt(z.style.width) * maxa) + 'px';
            mqr[j].ary.push(z);
        }
    }
    mqr[0].TO = setTimeout('mqRotate(mqr)', 10);
}

1 个答案:

答案 0 :(得分:4)

原因很可能是没有id为“m1”的元素。首先将此行放在start函数中以进行诊断:

alert(document.getElementById('m1'));

如果它显示“[Object]”(或类似),则元素存在并且它是一些其他问题,但如果它显示“未定义”,则表示页面中没有这样的元素。