01/10/2018, 08:37

Cần anh em giúp đỡ tìm lỗi JS

em có đoạn code JS append vào HTML như sau: và nó k append vào file HTML được. ae giúp em tìm lỗi với, many thanks

var images = [
{
	src: 'xxx.jpg',
	count_like: 9898,
	user: {
		name: 'Nguyen Minh Huy',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 98,
	user: {
		name: 'Nguyen Minh Huyen',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 123,
	user: {
		name: 'Nguyen Minh hoang',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 999,
	user: {
		name: 'Nguyen Minh hao',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 345,
	user: {
		name: 'Nguyen Minh ha',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 345,
	user: {
		name: 'Nguyen Minh ha',
		avatar: 'xxx.jpg'
	}
},

];

var app = {
	draw : draw,
};

$(document).ready(function () {
		app.draw();
});

function draw(){
	images.each(function(key,image) {
		var html = 
		
		'<div class="image">'
		+	'<img src="'+image.src+'">'
	+	'</div>'
	+	'<div class="content-img">'
		+	'<div class="like">'
			+	'<a href="#">'
				+	'<img src="like.png">'
				+	'<span>'+image.count_like+'</span>'
			+	'</a>'
		+	'</div>'
		+	'<div class="user">'
			+	'<img src="'+image.user.avatar+'">'
			+	'<a href="#">'+image.user.name+'</a>'
		+	'</div>'
		+	'<div class="download">'
			+	'<a href="#">'
				+	'<img src="download.png">'
			+	'</a>'
		+	'</div>'
	+	'</div>';

	$('footer div.col-4').append(html)
	});
}
Vu Anh Hao viết 10:40 ngày 01/10/2018

images.each(function(key, image){ ... })

chuyển thành

images.forEach(function(image){ ... })
hoặc
for (let image of images){ ... }

Lê Thạc Kiên viết 10:44 ngày 01/10/2018

vẫn k được bạn ạ ! t gửi bạn cả folder luôn nhé

Vu Anh Hao viết 10:43 ngày 01/10/2018

Ừm, cứ gửi xem sao ^^

Lê Thạc Kiên viết 10:37 ngày 01/10/2018

ở đây k có nút upload folder nhỉ? :((

*grab popcorn* viết 10:38 ngày 01/10/2018

Muốn gửi file nhanh bạn có thể dùng http://wikisend.com/

Lê Thạc Kiên viết 10:42 ngày 01/10/2018

chỉ up được file thôi b à

*grab popcorn* viết 10:51 ngày 01/10/2018

Bạn có thể nén lại và chia sẽ file nén là được.

Lê Thạc Kiên viết 10:46 ngày 01/10/2018

cảm ơn bạn nhé :))))))

Lê Thạc Kiên viết 10:46 ngày 01/10/2018

bạn ơi, file đây http://wikisend.com/download/503762/unsplash.zip

Nguyễn Hoàng viết 10:49 ngày 01/10/2018

var app = {
draw : draw,
};

var app = {
draw : draw,
}; ?? nhìn qua là biết cái này undefine

Lê Thạc Kiên viết 10:53 ngày 01/10/2018

nó chỉ là khai báo đối tượng thôi bạn !

Vu Anh Hao viết 10:42 ngày 01/10/2018

Hahaha! Trong Javascript thì nó vẫn được =)). Function nó sẽ tự đẩy lên đầu hết

Nguyễn Hoàng viết 10:41 ngày 01/10/2018

nhìn lại lexical scope của nó. :)) không tin hãy f12 lên và nhìn nhé :))

Vu Anh Hao viết 10:40 ngày 01/10/2018

lexical scope

Sorry em mắt mờ không nhìn rõ
=))

Nguyễn Hoàng viết 10:50 ngày 01/10/2018

mà mình làm js cũng nhiều sao không nhớ nó có cái hàm each này nhỉ, không biết bạn kai lấy nó ở đâu …

Vu Anh Hao viết 10:48 ngày 01/10/2018

Hình như nó trong JQuery thì phải

Nguyễn Hoàng viết 10:47 ngày 01/10/2018

hơn nữa callback truyền vào iterator thường sẽ nhận tham số là value và key chứ nhỉ bạn sao kia lại là key, value ?

Vu Anh Hao viết 10:48 ngày 01/10/2018

Ừm, công nhận, cũng đang thắc mắc.

Vu Anh Hao viết 10:38 ngày 01/10/2018

Code đã fix!

var images = [
{
	src: 'xxx.jpg',
	count_like: 9898,
	user: {
		name: 'Nguyen Minh Huy',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 98,
	user: {
		name: 'Nguyen Minh Huyen',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 123,
	user: {
		name: 'Nguyen Minh hoang',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 999,
	user: {
		name: 'Nguyen Minh hao',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 345,
	user: {
		name: 'Nguyen Minh ha',
		avatar: 'xxx.jpg'
	}
},
{
	src: 'xxx.jpg',
	count_like: 345,
	user: {
		name: 'Nguyen Minh ha',
		avatar: 'xxx.jpg'
	}
},

];


function draw(){
	images.forEach(function(image) {
		var html = 
		
		'<div class="image">'
		+	'<img src="'+image.src+'">'
	+	'</div>'
	+	'<div class="content-img">'
		+	'<div class="like">'
			+	'<a href="#">'
				+	'<img src="like.png">'
				+	'<span>'+image.count_like+'</span>'
			+	'</a>'
		+	'</div>'
		+	'<div class="user">'
			+	'<img src="'+image.user.avatar+'">'
			+	'<a href="#">'+image.user.name+'</a>'
		+	'</div>'
		+	'<div class="download">'
			+	'<a href="#">'
				+	'<img src="download.png">'
			+	'</a>'
		+	'</div>'
	+	'</div>';

	$('footer div.col-4').append(html)
	});
}

$('li a.more').on('click', function(){
	$('ul.toggle-hide').toggle();
});

var app = {
	draw : draw,
};

$(document).ready(function () {
	app.draw();	
});
Nguyễn Hoàng viết 10:47 ngày 01/10/2018

1 cái kinh nghiệm hay hay cho bạn là không nên dùng khai báo var, thứ 2 nữa là không nên khai báo biến ở global scope như vậy, vì như thế nó sẽ tự động trở thành 1 property của object window, bạn có thể f12 rồi nhập this để nhìn thấy window. làm như vậy người ta gọi là làm bẩn môi trường. sau này có thể dẫn đến 1 số bug cực kì khó debug :)) good luck !!

Bài liên quan
0