博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSDom——列表选中移动篇
阅读量:7221 次
发布时间:2019-06-29

本文共 3373 字,大约阅读时间需要 11 分钟。

这个列表选中移动呢,灵感来自淘宝,在淘宝注册店铺的过程中,会涉及到选择分类,而其选择方式呢,就是如下效果:
2011032120372420.png
以下为具体的实现方式:
①  
HTML源码:
 
1
<!
DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
2
<
html
xmlns
="http://www.w3.org/1999/xhtml"
>
3
<
head
>
4
<
meta
http-equiv
="Content-Type"
content
="text/html; charset=utf-8"
/>
5
6
<
title
>
无标题文档
</
title
>
7
</
head
>
8
<
body
>
9
<
span
>
10
<
select
id
="left"
multiple
="multiple"
style
="width: 80px; height:120px; background:#CCC;"
>
11
<
option
>
1
</
option
>
12
<
option
>
2
</
option
>
13
<
option
>
3
</
option
>
14
<
option
>
4
</
option
>
15
<
option
>
5
</
option
>
16
<
option
>
6
</
option
>
17
</
select
>
18
<
input
type
="button"
value
="→"
id
="forR"
/>
19
<
input
type
="button"
value
="More→"
id
="MforR"
/>
20
<
input
type
="button"
value
="←"
/ id
="forL"
>
21
<
input
type
="button"
value
="More←"
id
="MforL"
/>
22
<
select
id
="right"
multiple
="multiple"
style
="width:80px; height:120px; background:#CCC;"
>
23
24
</
select
>
25
</
span
>
26
</
body
>
27
<
script
type
="text/javascript"
src
="move.js"
></
script
>
28
</
html
>
网页中有六个元素:
4个按钮,两个select框
②  JavaScript源码:
 
 
1
/*
获得四个按钮的节点对象
*/
2
var
forR
=
document.getElementById(
"
forR
"
);
3
var
MforR
=
document.getElementById(
"
MforR
"
);
4
var
forL
=
document.getElementById(
"
forL
"
);
5
var
MforL
=
document.getElementById(
"
MforL
"
);
6
/*
单项左向右移动
*/
7
forR.onclick
=
function
(){
8
//
获得两个select框元素节点
9
var
left
=
document.getElementById(
"
left
"
);
10
var
right
=
document.getElementById(
"
right
"
);
11
//
获得所有选项元素
12
var
loptions
=
left.options;
13
//
遍历所有选项对象
14
for
(
var
i
=
0
;i
<
loptions.length;i
++
){
15
var
op
=
loptions[i];
16
//
如果选项被选中则将该元素添加到右边的选择框中、也就是移动
17
if
(op.selected){
18
right.appendChild(op);
19
break
;
20
}
21
}
22
}
23
/*
多项左向右移动
*/
24
MforR.onclick
=
function
(){
25
//
获得两个select框元素节点
26
var
left
=
document.getElementById(
"
left
"
);
27
var
right
=
document.getElementById(
"
right
"
);
28
//
获得所有选项元素
29
var
loptions
=
left.options;
30
//
遍历所有选项对象
31
for
(
var
i
=
0
;i
<
loptions.length;i
++
){
32
var
op
=
loptions[i];
33
//
如果选项被选中则将该元素添加到右边的选择框中、也就是移动
34
if
(op.selected){
35
right.appendChild(op);
36
i
--
;
37
}
38
}
39
}
40
/*
单项右往左移动
*/
41
forL.onclick
=
function
(){
42
//
获得两个select框元素节点
43
var
left
=
document.getElementById(
"
left
"
);
44
var
right
=
document.getElementById(
"
right
"
);
45
//
获得所有选项元素
46
var
roptions
=
right.options;
47
//
遍历所有选项对象
48
for
(
var
i
=
0
;i
<
roptions.length;i
++
){
49
var
op
=
roptions[i];
50
//
如果选项被选中则将该元素添加到右边的选择框中、也就是移动
51
if
(op.selected){
52
left.appendChild(op);
53
break
;
54
}
55
}
56
}
57
/*
多向右往左移动
*/
58
MforL.onclick
=
function
(){
59
//
获得两个select框元素节点
60
var
left
=
document.getElementById(
"
left
"
);
61
var
right
=
document.getElementById(
"
right
"
);
62
//
获得所有选项元素
63
var
roptions
=
right.options;
64
//
遍历所有选项对象
65
for
(
var
i
=
0
;i
<
roptions.length;i
++
){
66
var
op
=
roptions[i];
67
//
如果选项被选中则将该元素添加到右边的选择框中、也就是移动
68
if
(op.selected){
69
left.appendChild(op);
70
i
--
;
71
}
72
}
73
}
注意:
  1.在以上的脚本代码中我们可以看到当单个元素移动时利用break结束了循环,这是为了保证每次即使多选也只移动一个元素,循环也就只执行一次
  2.在多个选中项的移动中,当检测到选中元素并移走后select中元素减少,而检测元素的下标就会从移走的后的下标直接往后移动检测,
  如果不进行减操作会导致每次都遗留一个元素,这并不符合我们的理想效果
  
  从反向的移动中我们可以看到选项不会像以前正常排序,希望如果有想法的老牛们给些提示,希望大家在本文中可以学到写东西,共同交流。
本文版权所有,转载请注明出处!

转载于:https://www.cnblogs.com/H_Razor/archive/2011/03/21/1990673.html

你可能感兴趣的文章
毕设开发日志2017-10-23
查看>>
***微信公众平台开发: 获取用户基本信息+OAuth2.0网页授权
查看>>
第二章 例题2-2 在屏幕上显示两个短句
查看>>
【转】iOS学习之适配iOS10
查看>>
OC语言BLOCK和协议
查看>>
C++创建一个动态链接库工程
查看>>
(六)maven之本地仓库
查看>>
如何使用 SPICE client (virt-viewer) 来连接远程虚拟机桌面?
查看>>
CentOS7
查看>>
linux高编IO-------tmpnam和tmpfile临时文件
查看>>
微信的机器人开发
查看>>
从零开始学Java(二)基础概念——什么是"面向对象编程"?
查看>>
近期面试总结(2016.10)
查看>>
CodeForces 525D Arthur and Walls :只包含点和星的矩阵,需要将部分星变成点使满足点组成矩形 : dfs+思维...
查看>>
积累_前辈的推荐
查看>>
strcpy和memcpy的区别《转载》
查看>>
在windows平台下electron-builder实现前端程序的打包与自动更新
查看>>
DroidPilot V2.1 手写功能特别版
查看>>
COOKIE欺骗
查看>>
js 强转规范解读
查看>>