即使你从官网下载prototype.js也会有该问题,所有用prototype就要注意下一他对 数组的扩展。你改了也不能成功关键是你有些地方的for in是数组,有的地方是对象,所以不是所有都能改的 例如: var obj={'a':'aa','b':'bb'} for(key in obj) { alert(key); //这个在有prototype和没prototype都不会出现问题 }但是如下就会有问题了 var a = new Array(); a[0] = "aa"; a[1] = "bb";for(index in a) { alert(index); //这个在有prototype会多出一些东西,你可以自己测试 }
你注释掉以后弹出窗口有选项吗?
你先把对prototype.js去掉看看正常情况下弹出窗口的情形
prototype为数组扩张了一个迭代接口,所以像下面的语句,i返回的是迭代接口的调用,而不是你要想的索引或key了
for(i in arr)
{
arr[i]=xxx;
}解决方法就是把你的这些用法改为
for(i=0; i<arr.length;i++)
{
arr[i]=xxx;
}或者是按prototype里的迭代方式来修改代码(工作量很大)
有道理,那就是把代码中的for(i in arr) 改为for(i=0; i <arr.length;i++)就可以了?
奇怪chinmo 给的展示可以解决问题,但是他的prototype.js好像多了5K
我试过你的代码是可以运行的,我之所以要把问题搞清楚,是担心解决了这个问题引出了另外的问题我不能使用你的版本的prototype.js,因为可能会导致网站的其他js出现问题,我其他的代码都是调用prototype.js的
还有,我在看你的prototype.js,你把那一行注释掉以后引发了一个异常,要处理这个异常就是把这行前的,号去掉去掉,号以后问题仍然出来了。
所以我觉得你的解决方法是这样工作的:
引发了prototype.js的异常,导致prototype没有完全运行,所以也就没法与我的代码产生冲突
我没发现有什么异常,说不运行?那你提供一个调用prototype,你认为出了问题的代码出来
(注:是按你说的修改的,最好将ie的js调试打开)http://www.soodex.com/zhaopin/zhaopin.htm
***************************************************
这个异常我想应该要把ie浏览器的js调试打开才可以
你说的去掉,号没有用,不但prototype.js不正常运行,还出现了原来的问题
数组的扩展。你改了也不能成功关键是你有些地方的for in是数组,有的地方是对象,所以不是所有都能改的
例如:
var obj={'a':'aa','b':'bb'}
for(key in obj)
{
alert(key); //这个在有prototype和没prototype都不会出现问题
}但是如下就会有问题了
var a = new Array();
a[0] = "aa";
a[1] = "bb";for(index in a)
{
alert(index); //这个在有prototype会多出一些东西,你可以自己测试
}
注释掉那一行的实质,就相当于没有引用prototype.js
这一点我测试来测试去,确实是这样的,而且prototype.js是官网上下载下来的,在其他地方使用也没有出现问题,因此,你说的那一行实际上是没有问题的;
之所以你那样注释掉可以运行出结果(但页面打开时会报错,源自注释掉的那一行),是因为注释掉了导致prototype.js不能运行的原因。
你不在他上做文章不行因为你调用他才有问题,那么肯定是冲突了而你说没有,那么就只有是prototype.js里的问题了