未捕获的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'));
对于下面的行也一样。