Chuyển đổi phần tử của 2 thẻ Select Multiple
Hôm nay ngồi buồn nên tiếp tục biên soạn bài tập cho series Javascript Example, và trong bài này chúng ta sẽ xây dựng một ứng dụng cho phép chuyển đổi các phần tử giữa hai thẻ select multiple. Ứng dụng này cũng rất hay gặp trong thực tế, ví dụ bạn xây dựng form quản lý tin tức cho phép người dùng chọn nhiều chuyên mục thì cách xử lý này cung rất hay và chuyên nghiệp.
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.Đây là giao diện của ứng dụng.
Bài giải
Bài này cũng tương đối đơn giản, vấn đề duy nhất là bạn phải hiểu nguyên lý duy nhất của các phần tử HTML khi lấy trong Javascript.
Bài viết này được đăng tại [free tuts .net]
// Lấy 2 đổi tượng
var a = document.getElementById('a');
var b = document.getElementById('b');
// Đưa b vào a
a.appendChild(b);
// Lúc này trên giao diện HTML thẻ a sẽ bị xóa khỏi vị trí của nó
// và di chuyển vào bên trong của thẻ b, nghĩa là bạn không cần phải
// thực hiện thao tác xóa a khỏi vị trí ban đầu của nó
Ok vậy bài này chúng ta sẽ có toàn bộ code như sau:
<!DOCTYPE html>
<html>
<head>
<title>Select Multiple</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<h2>Ví dụ được biên soạn tại freetuts.net</h2>
<h3>Chọn các chuyên mục từ danh sách dưới đây</h3>
<select multiple id="left">
<option value="tin công nghệ">Tin công nghệ</option>
<option value="tin thời sự">Tin thời sự</option>
<option value="tin quốc tế">Tin quốc tế</option>
<option value="tin thể thao">Tin thể thao</option>
<option value="tin nông nghiệp">Tin nông nghiệp</option>
</select>
<input type="button" id="left_to_right" value="<<" onclick="left_to_right(1)"/>
<input type="button" id="right_to_left" value=">>" onclick="left_to_right(2)"/>
<select multiple id="right">
</select>
<script language="javascript">
// Hàm xử lý khi click vào 2 button
function left_to_right(type) {
if (type === 1) {
var left = document.getElementById("right");
var right = document.getElementById("left");
} else {
var left = document.getElementById("left");
var right = document.getElementById("right");
}
selectCategory(left, right);
}
// Hàm chuyển các phần tử từ left sang right
function selectCategory(left, right)
{
var options = left.children;
// Lấy tất cả những options selected từ left
var tmp = [];
for (var i = 0; i < options.length; i++){
if (options[i].selected){
tmp.push(options[i]);
}
}
// Đưa option selected qua right
for (var i = 0; i < tmp.length; i++){
right.appendChild(tmp[i]);
}
}
</script>
</body>
</html>
Mình sẽ không giải thích nhiều vì trong code đã có comment rất kỹ rồi. Nếu bạn chưa hiểu thì hãy comment bên dưới hoặc tự debug đi nhé :)

Các hàm xử lý chuỗi trong Javascript (cắt / tách / nối chuỗi ..)
Chia lấy phần dư / chia lấy phần nguyên trong javascript
Các cách khai báo biến trong Javascript
Các sự kiện (Event) trong Javascript
Hướng tạo thanh search bar bằng CSS
Hàm array.slice() trong Javascript
Tính tổng hai số bằng Javascript (cộng hai số)
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng 
