javascript - 如何动态创建 div 并在复选框更改时调整 div
问题描述
我有点卡在我的问题上,问题是我想创建一个按钮,在该按钮上将呈现宽度为 100% 的 div,在每个 div 或每行 div 中我将有一个复选框,点击框我会得到复选框的值为真或假。
注意:-单击复选框时我将获得此布尔值。
我也在分享我的代码:-
window.onload = function () {
var arrayDiv = [];
document.getElementById("newsectionbtn").onclick = function (e) {
e.preventDefault();
for(var i=0; i <= 1; i++){
arrayDiv[i] = document.createElement('div');
arrayDiv[i].id = 'block' + i;
arrayDiv[i].className = 'block' + i;
}
document.body.appendChild(arrayDiv[0].appendChild(arrayDiv[1]));
};
};
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="./script.js"></script>
<style>
div {
height: 200px;
width: 100%;
display: flex;
border: 1px solid black;
}
</style>
</head>
<body>
<button id="newsectionbtn">New Section</button>
<!-- <div id="container">
<section id="mainsection">
<input type="checkbox" id="mobile" checked=true />
</section>
</div> -->
</body>
</html>
我想制作一个满足我条件的算法:-
所以我的用例是:-
这里 t 代表真,f 代表假:-
假设这里isSectionTrue是一个数组,它具有选中或未选中的复选框的布尔值
/*
* isSectionTrue = [t,t,t]
* div-1 100%
* div-2 100%
* div-3 100%
*
* isSectionTrue = [t,f,t]
* div-1 50%
* div-2 50%
* div-3 100%
*
* isSectionTrue = [t,f,f]
* div-1 33%
* div-2 33%
* div-3 33%
*
*
* isSectionTrue = [f,t,t]
* div-1 100%
* div-2 100%
* div-3 100%
*
* isSectionTrue = [f,t,t,f,f,f,t,f,t]
* div1 - 100%
* div2 - 100%
* div3 - 25%
* div4 - 25%
* div5 - 25%
* div6 - 25%
* div7 - 50%
* div8 - 50%
* div9 - 100%
*/
解决方案
作为一个开始:
const arrayDiv = [];
document.getElementById("newsectionbtn").onclick = e =>
{
let newDiv = document.createElement('div')
, chkBx = document.createElement('input')
;
newDiv.id = 'block' + arrayDiv.push( newDiv )
chkBx.type = 'checkbox'
chkBx.dataset.ref = newDiv.id
chkBx.onclick = checkBxClick
document.body.appendChild( newDiv )
newDiv.appendChild(chkBx)
}
function checkBxClick (e)
{
let chkBx = e.target
console.clear()
console.log( chkBx.dataset.ref, chkBx.checked )
}
div {
height : 50px;
width : 100%;
display : flex;
border : 1px solid black;
}
<button id="newsectionbtn">New Section</button>
推荐阅读
- java - 如何到达appium中滚动条的末尾?
- python - 如何在 pytest skipif 标记中使用夹具?
- android - 错误:错误:'drawable/delete.png' 与属性 android:background (attr) 参考不兼容|颜色
- git - gitlab 错误:您的分支领先于 'origin/master' 10 次提交,您不允许将代码推送到受保护的分支
- python - 在类中使用带有 getattr 的 __setattr__ 方法
- rabbitmq - 队列和交换的 RabbitMQ 命名约定?
- android - 在 WorkManager 中使用 RxWorker 进行 api 调用
- android - Android O Foreground Service - 即使应用程序从后台终止或重新启动,如何处理与活动的通信
- gcc - 无法使用 avr-gcc 4.2.1 编译 TinyOs 应用程序,但能够使用 avr-gcc 3.3 进行编译
- hadoop - Sqoop 1.99.7 作业未在 Apache Hadoop 3.2.0 上运行