使用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 = ['-=-=-', '=-=-=', '-/ \-', '</ \>', '/ \', '\ /', '<\ />', '-\ /-', '=-=-=', '-=-=-', '-----'];
var i = 0;
setInterval(function() {
title.innerHTML = frames[i];
if ( i++ == 10 ) i = 0;
}, 500);
我今天一直遇到这个问题。每次我使用 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 = ['-=-=-', '=-=-=', '-/ \-', '</ \>', '/ \', '\ /', '<\ />', '-\ /-', '=-=-=', '-=-=-', '-----'];
var i = 0;
setInterval(function() {
title.innerHTML = frames[i];
if ( i++ == 10 ) i = 0;
}, 500);