我有一个Web应用程序的自定义构建js文件。我在firefox控制台上得到的消息是“在代码的特定行上传递给getElementById()的空字符串”。错误计数,每次点击都加上四(4)..在某些时候,浏览器开始卡住,直到它发出错误警告“脚本已停止工作或忙于联机:36,停止脚本或继续”
这条线是:
if(o=a.getElementById(i[2]),o&&o.parentNode){
部分代码:
q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},
_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),
e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),
e.detachEvent("onload",q))};
x.fn=x.prototype={jquery:f,constructor:x,
init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){
if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)
return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);
if(i[1]){
if(n=n instanceof x?n[0]:n,
x.merge(this,
x.parseHTML(i[1],
n&&n.nodeType?n.ownerDocument||n:a,!0)),
k.test(i[1])&&x.isPlainObject(n))
for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}
>>>>>This line error>>>>>> if(o=a.getElementById(i[2]),o&&o.parentNode){
if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}
return this.context=a,
this.selector=e,this}
答案 0 :(得分:0)
我认为这可能是问题所在:
for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}
i
以前是一个数组,但这会重复使用该变量作为循环的索引。循环完成后,i
包含n
中的最后一个属性名称,而不是原始数组,但下一行要求它仍包含原始数组。
使用与函数中的另一个变量不冲突的变量名。
答案 1 :(得分:0)
该脚本在文档加载时应用带有ajax调用的函数,并且通知的间隔为1分钟。我在ajax成功结果中将间隔更改为Timeout,现在它可以工作并且不会使浏览器失败..