未捕获的TypeError:undefined不是函数javascript函数

我写了“冒泡排序”function来排序图像列表。 我无法理解为什么函数返回“未捕获的TypeError:undefined不是函数”。 谁能帮我?

$j(document).ready(function() { var list = $j("dt").find("a").find("img"); bubbleSort(list, list.size()); }); function bubbleSort(a, size) { do { var swapped = false; for (var i = 0; i  img2) { var temp = a[i].attr('src'); a[i].attr('src') = a[i + 1].attr('src'); a[i + 1].attr('src') = temp; swapped = true; } } } while (swapped); // <----- line error } function getAlt(list, pos) { var img = list[pos].attr("alt"); img = img.split(' '); return img[3]; } 

而不是list[pos]使用list.eq(pos)因为第一个你得到一个原始HTML元素(没有attr函数),第二种方式你得到一个jQuery对象(它有一个attr函数)

也使用list.length而不是list.size()因为自1.8版以来不推荐使用size函数

最后如M. Page

 a[i].attr('src') = a[i + 1].attr('src'); 

应该

 a.eq(i).attr('src', a.eq(i + 1).attr('src')); 

类似的陈述也是如此

如果img没有alt属性,你还应该考虑改变你的getAlt函数

 function getAlt(list, pos) { var img = list.eq(pos).attr("alt") || ""; if(img) { img = img.split(' '); } return img[3] || ""; } 

所有这些变化都可以在以下小提琴中找到http://jsfiddle.net/ejhq03qy/1/

 a[i].attr('src') = a[i+1].attr('src'); 

必须写:

 a[i].attr('src', a[i+1].attr('src')); 

对于下面的行也一样。