1.依赖jquery,主要利用二维数组。

2.原生手写。

代码如下:

 <!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
input{
width: 50px;
height: 35px;
background: orange;
}
</style>
</head>
<body>
<div class="container">
<div class="row">
<input type="button" value="红" />
<input type="button" value="黄" />
<input type="button" value="蓝"/>
<input type="button" value="白"/>
<input type="button" value="军绿"/> </div> <div class="row">
<input type="button" value="xl"/>
<input type="button" value="xxl"/>
<input type="button" value="xxxl"/>
</div> <div class="row">
<input type="button" value="纯棉"/>
<input type="button" value="牛仔"/>
<input type="button" value="针织"/>
</div> <div class="row">
<input type="button" value="A"/>
<input type="button" value="B"/>
<input type="button" value="C"/>
<input type="button" value="D"/>
<input type="button" value="E"/>
</div>
</div> <div class="box"> </div> <script src="jquery-3.2.1.min.js"></script>
<script type="text/javascript"> //给按钮添加选中取消标志
$(".container .row input").attr("data-check",1);
//获取矩阵按钮
function getBtn(ele){
var arr=[];
var contain = $(ele);
for(let i=0;i<contain.length;i++){
arr.push($.makeArray(contain[i].children));
}
return arr;
}
//生成二维数组
var data = getBtn(".container .row"); //判断点击的元素是否在二维数组中
function getIndex(ele,map){
var res=[];
for(let i=0;i<map.length;i++){
for(let j=0;j<map[i].length;j++){
if(map[i][j] == ele){
res = [i,j];
}
}
}
return res;
} //生成默认值
function init(data){
var arr = [];
for(let i = 0;i<data.length;i++){
arr.push([i,0]);
//默认选中的样式
$(data[i][0]).attr("data-check",0);
$(data[i][0]).css("background","gray");
}
return arr;
}
var defaultVal = init(data); //渲染函数
function myRender(s,data){
var str="";
for(let i = 0; i<data.length;i++){
str+=data[s[i][0]][s[i][1]].value+",";
}
$(".box").append("<p>"+str+"</p>");
} //绑定点击事件
$(".container .row input").on("click",function(){
var _this=$(this);
//判断在哪行那列
var res = getIndex(_this[0],data); if(_this.attr("data-check")==1 ){
_this.attr("data-check",0);
_this.css("background","gray");
_this.siblings().css("background","orange")
_this.siblings().attr("data-check",1) //插入要渲染的数据
defaultVal.splice(res[0],1,res);
//渲染数据
myRender(defaultVal,data); }else{
//点击取消,替换回这一行的默认值
defaultVal[res[0]] = [res[0],0];
myRender(defaultVal,data);
_this.attr("data-check",1);
if(res[1]!==0){
_this.css("background","orange");
}
}
}) </script>
</body>
</html>

事实上这个东西还有无限扩展,包括利用vue或react进行dom操作,还有各种接口,商品数量的操作等,时间有限,先这些。

最新文章

  1. 网页万能排版布局插件,web视图定位布局创意技术演示页
  2. java swing文件内容检索工具
  3. net TreeView 递归
  4. wpf中button的无边框实现
  5. 在sublime text 中的Emmet快捷键动态图演示
  6. .NET设计模式(15):结构型模式专题总结(转)
  7. java_利用session校验图片认证码
  8. 【HTML】Beginner2:page title
  9. 列求key出现的频率
  10. display属性
  11. CentOS 编译安装 Redis (实测 笔记 Centos 7.3 + redis 3.2.8)
  12. Scrum冲刺阶段2
  13. C语言——第零次作业
  14. (转) IDirectSoundBuffer::SetVolume的参数与音量分贝的函数关系
  15. Angular总结一:环境搭建
  16. spark学习系列
  17. Excel 2010 如何在Excel的单元格中加入下拉选项
  18. 获取BinaryReader中读取的文件名
  19. Windows下查看占用端口程序
  20. jquery call cross-domain webapi owin self-host

热门文章

  1. 硬盘坏道检测工具对比(DiskGenius/HdTunePro/MHDD等)
  2. Linux常见配置文件
  3. ZOJ2481 Unique Ascending Array 2017-04-18 23:08 33人阅读 评论(0) 收藏
  4. Hdu1050 Moving Tables 2016-05-19 16:08 87人阅读 评论(0) 收藏
  5. 一起学习MVC(4)Controllers的学习
  6. SQL分组合并
  7. Stm32 ADC学习
  8. 解决创建带有NameSpace的XML文件出现空白xmlns的问题
  9. 使用libxml2进行xml开发(一)
  10. day 69 ORM 多表增删改查操作