当加入prototype.js后, 不再推荐用for in 循环了. 但由此带来了问题.
比如这段代码
<script>
var a=[];
a["a"]="aa";
a["b"]="b";
for(var o in a){
document.write(a[o]);
document.write("<br />");
}
</script>
这个时候,用for in是没有问题的.
但当们加入了prototype.js后,用prototype的each循环
<script src='http://images.chinaren.com/product/webim/version/2.0/js/libs/prototype.js'></script>
<script>
var a=[];
a["a"]="aa";
a["b"]="b";
$H(a).each(function(item){
document.write(a[o]);
document.write("<br />");
});
</script>
这段代码并不会打出任何值.
问题出在哪里?
将
var a=[]
改成
var a={}
就正常了.
原理上还未知是什么原因, 可能是由于要把a设成一个对象,$H是出来的对象的属性,而不是数组.