[英]Uncaught TypeError: undefined is not a function javascript function
我編寫了“氣泡排序”功能來對圖像列表進行排序。 我不明白為什么該函數返回“ Uncaught 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 < size - 1; i++) {
var img = getAlt(a, i);
var img2 = getAlt(a, i + 1);
if (img > 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'));
下面的行也一樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.