【发布时间】:2011-08-03 22:54:52
【问题描述】:
对于可能令人困惑的标题,我深表歉意,但我不太确定如何标记此线程。无论如何,我正在开发一个在 IE 中运行良好的 Web 应用程序,但由于某种原因在 Firefox 中似乎失败了。我知道一开始很多应用程序都会出现这种情况,但是 Firefox 开发控制台给我的错误并没有多大意义。以下是它出现的错误:
$("#workNews").text(lines[i++]).hide is not a function
syntax error
data.split is not a function
第一个错误是声称以下代码行中断,因为它认为 jQuery.hide() 不是函数。
$("#workNews").text(lines[i++]).hide().fadeIn(500).delay(4000).fadeOut(500);
现在,这行代码之前在 IE 和 Firefox 中都可以使用,但是突然坏掉了。与第三个错误相同,因为它认为通过分隔符拆分字符串的“split()”方法不是函数。再一次,这条线以前工作过,现在突然不行了。 “语法错误”真的很奇怪......我正在使用“$ .get()”方法从文本文件中打开和读取行,该方法运行良好,并且在 IE 中仍然有效。但是,Firefox 开发者控制台告诉我存在语法错误并继续指向文件中的一行文本。
我不确定是否有一个简单的事情需要在我的代码中的其他地方修复,而这些错误并不明显,但是当遇到这样的问题时,我想知道是否有任何“通常的原因”发生。如果您需要查看我的更多代码,只需询问即可。谢谢。
编辑#1:为了安全起见,这里是所有三个“错误”都应该发生的整个函数。同样,直到最近,此功能在 IE 和 Firefox 中都运行良好。
function GetWorkNews() {
var lines = new Array(); var i = 0;
$.get(textFile, function(data) {
lines = data.split("\n");
});
$("#workNews").text(lines[i++]).hide().fadeIn(500).delay(4000).fadeOut(500);
setInterval(function() {
$("#workNews").text(lines[i++]).hide().fadeIn(500).delay(4000).fadeOut(500);
if(i == lines.length) {
i = 0;
}
}, 5000);
}
编辑 #2:当我在修补时,我注释掉了我调用 hide() 函数的第一行 jQuery: $(#workNews").text(lines[i++]).hide().fadeIn(500).delay(4000).fadeOut(500); 现在一切似乎都正常了,尽管 FF 开发控制台仍然告诉我我的文本文件中存在语法错误。我想我不需要“需要”我注释掉的这一行,因为它只是用文本为我的横幅做准备,这样它就不必等待五秒钟来显示第一个标题,但我仍然喜欢它.任何想法为什么该行中断,但 setInterval() 函数中的行不完全相同?
【问题讨论】:
-
你能确认 jquery 是在 FF 中加载的吗?
-
看来
split()函数是罪魁祸首。在字符串以外的任何内容上使用split()将引发split is not a function错误。你检查过数据的有效性吗? -
我知道除了 GetWorkNews() 之外,我还有大约六个使用 jQuery 的函数,所有这些函数在 IE 和 FF 中都可以正常工作,所以我认为它已正确加载。我仔细检查了 AJAX GET 调用返回的数据,它实际上是一个由换行符分隔的大字符串。我还尝试用我以前工作过的相对路径字符串替换“textFile”变量名。还是什么都没有……
-
如果我使用 $.html() 而不是 $.text,$.hide() 会起作用吗?如果是这样,那可能会修复错误吗?
标签: jquery firefox text split hide