使用HTML DOM 查找元素总是returns 错误?

Using HTML DOM to find element always returns error?

我今天一直遇到这个问题。每次我使用 HTML DOM 查找页面的某些部分时,它总是 returns 错误提示“...不是函数。”

从打印到页面,甚至只是简单地更改页面标题,一切都失败了。

我使用过 JSLint,查过它等等,但仍然不知道这意味着什么。

更奇怪的是,我很容易使用相同的方法让它在不同的页面上工作。 这是为标题栏创建加载动画的尝试:

var loadingstat;
loadingstat = false;
var pgtA;
pgtA = 0;
setInterval(pgtUpdater(), 80);
function pgtUpdater() {
    if (pgtA == 0 && loadingstat = true) {
        document.getElementsByTagName[0]("title").innerHTML = "-=-=-";
        ++pgtA;
    } else {
        if (pgtA == 1 && loadingstat = true) {
            document.getElementsByTagName[0]("title").innerHTML = "=-=-=";
            ++pgtA;
        } else {
            if (pgtA == 2 && loadingstat = true) {
                document.getElementsByTagName[0]("title").innerHTML = "-/ \-";
                ++pgtA;
            } else {
                if (pgtA == 3 && loadingstat = true) {
                    document.getElementsByTagName[0]("title").innerHTML = "</ \>";
                    ++pgtA;
                } else {
                    if (pgtA == 4 && loadingstat = true) {
                        document.getElementsByTagName[0]("title").innerHTML = "/   \ ";
                        ++pgtA;
                    } else {
                        if (pgtA == 5 && loadingstat = true) {
                            document.getElementsByTagName[0]("title").innerHTML = "\   /";
                            ++pgtA;
                        } else {
                            if (pgtA == 6 && loadingstat = true) {
                                document.getElementsByTagName[0]("title").innerHTML = "<\ />";
                                ++pgtA;
                            } else {
                                if (pgtA == 7 && loadingstat = true) {
                                    document.getElementsByTagName[0]("title").innerHTML = "-\ /-";
                                    ++pgtA;
                                } else {
                                    if (pgtA == 8 && loadingstat = true) {
                                        document.getElementsByTagName[0]("title").innerHTML = "=-=-=";
                                        ++pgtA;
                                        } else {
                                            if (pgtA == 9 && loadingstat = true) {
                                                    document.getElementsByTagName[0]("title").innerHTML = "-=-=-";
                                                ++pgtA;
                                            } else {
                                                if (pgtA == 10 && loadingstat = true || loadingstat = false) {
                                                        document.getElementsByTagName[0]("title").innerHTML = "-----";
                                                    pgtA = 0;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

直到今天我才真正遇到过这个问题。每当我尝试编辑页面中的元素时,这似乎总是会发生。

另外我知道这些条件写得不正确,我目前正在努力解决这个问题。

您正在 setInterval 中调用 pgtUpdater()。尝试只传递函数名称。我在控制台中尝试了一个示例函数,正如您所看到的,该函数仅在使用括号时被调用一次,这可能是问题所在。

这是您的代码的修改版本,您可以在 about:blank 尝试(运行 来自控制台的代码):

var title = document.getElementsByTagName('title')[0];
if ( !title ) {
  title = document.createElement('title');
  document.head.appendChild(title);
}
var frames = ['-=-=-', '=-=-=', '-/&nbsp;\-', '</&nbsp;\>', '/&nbsp;&nbsp;&nbsp;\', '\&nbsp;&nbsp;&nbsp;/', '<\&nbsp;/>', '-\&nbsp;/-', '=-=-=', '-=-=-', '-----'];
var i = 0;
setInterval(function() {
  title.innerHTML = frames[i];
  if ( i++ == 10 ) i = 0;
}, 500);