js/jQuery常见操作 之 jQuery操作复选框的常见问题

news2024/11/23 10:33:00

js/jQuery常见操作 之 jQuery操作复选框的常见问题

  • 1. js/jQuery的其他一些常见基础操作
  • 2. 全选/全不选问题
    • 2.1 效果
    • 2.2 实现代码
      • 2.2.1 简单js实现
      • 2.2.2 jQuery实现
        • 2.2.2.1 注意语法(区别jQuery版本)
        • 2.2.2.2 完整代码实现
  • 3. jQuery实现点击 行tr 实现checkBox选中 + 翻页勾选问题
    • 3.1 jQuery实现点击 行tr 获取td中checkBox的值
      • 3.1.1 方式1
      • 3.1.2 方式2
    • 3.2 jQuery实现点击 行tr 实现checkBox选中或取消
      • 3.2.1 点击 tr 时,checkbox选中或取消
      • 3.2.2 点击 首行tr 时,实现全选或全不选
      • 3.2.3 点击非首行tr时(数据列表行),全选或全不选自动切换
    • 3.3 翻页勾选问题
    • 3.4 附上述操作tr的全代码

1. js/jQuery的其他一些常见基础操作

  • js/jQuery 的一些常用操作(js/jQuery获取表单元素值 以及 清空元素值的各种实现方式)——附测试例子,拿来即能实现效果.

2. 全选/全不选问题

2.1 效果

  • 如下:
    在这里插入图片描述

2.2 实现代码

2.2.1 简单js实现

  • 如下:
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    	</head>
    	<body>
    		
    		<form method="post" action="">
    			
    			您想饲养的狗狗有?
    			<input type="checkbox" id="checkAllOrNo"/>全选/全不选
    			 
    			<br />
    			<input type="checkbox" name="items" value="边牧"/>边牧
    			<input type="checkbox" name="items" value="柯基"/>柯基
    			<input type="checkbox" name="items" value="秋田犬"/>秋田犬
    			<input type="checkbox" name="items" value="金毛"/>金毛
    			
    			<br />
    			<input type="button" id="checkAll" value="全选"/>
    			<input type="button" id="checkNoOne" value="全不选"/>
    			<input type="button" id="fanxuan" value="反选"/>
    			<input type="button" id="btnAllOrNO" value="全选/全不选"/>
    			<input type="button" id="commit" value="提交"/>
    			
    		</form>
    		
    		<script type="text/javascript">
    			
    			//1. 全选
    			var all = document.getElementById("checkAll");
    			function funAll(){
    				var box = document.getElementsByName("items");
    				for(var i =0;i<box.length;i++){
    					// alert(box[i].value);
    					box[i].checked = true;
    				}
    			}
    			all.onclick = funAll;
    			
    			//2.全不选
    			var allNo = document.getElementById("checkNoOne");
    			function funAllNo(){
    				var box = document.getElementsByName("items");
    				for(var i =0;i<box.length;i++){
    					box[i].checked = false;
    				}
    			}
    			allNo.onclick = funAllNo;
    			
    			//3.反选(直接取反)
    			var fan = document.getElementById("fanxuan");
    			fan.onclick = function(){
    				var box = document.getElementsByName("items");
    				for(var i =0;i<box.length;i++){	
    					// if(box[i].checked == false){
    					// 	box[i].checked = true;
    					// }else{
    					// 	box[i].checked = false;
    					// }
    					//可以将整个if else优化为,如下:
    					box[i].checked = !box[i].checked;//直接取反
    				}
    			}
    			
    			//4.全选/全不选----按钮操作
    			var btn_check_all = document.getElementById("btnAllOrNO");
    			btn_check_all.onclick = function(){
    				var boxes = document.getElementsByName("items");
    				var flag = false;//false-全不选  true-全选
    				for(var i =0; i<boxes.length; i++){
    					if(boxes[i].checked == false){
    						flag = true;//只要存在没有选中的话,就进行反选
    						break;
    					}
    				}
    				// alert(flag);
    				if(flag){
    					//执行全选函数
    					funAll();
    				}else{
    					//执行全不选函数
    					funAllNo();
    				}
    			}
    			
    			//5 全选/全不选——复选框操作
    			//5.1 点击全选复选框
    			var checkAllOrNo_2 = document.getElementById("checkAllOrNo");//复选框全选/全不选
    			checkAllOrNo_2.onclick = function(){
    				var box = document.getElementsByName("items");
    				for(var i =0; i<box.length; i++){
    					box[i].checked = this.checked;//即:选中状态与全选/全不选的复选框保持一致即可
    				}
    			}
    			
    			//5.2 点击各项目复选框
    			var boxAll_2 = document.getElementsByName("items");
    			for(var i=0;i<boxAll_2.length;i++){
    				boxAll_2[i].onclick = function(){
    					checkAllOrNo_2.checked = true;//点击任何一个复选框,全选复选框都先设置为选中状态
    					for(var i=0; i<boxAll_2.length; i++){
    						if(boxAll_2[i].checked == false){
    							//只要有没有选中,全选复选框就设置未选中
    							checkAllOrNo_2.checked = false;
    							break;
    						}
    					}
    				}
    			}
    			
    			//6.提交 获取选中的复选框
    			var data = document.getElementById("commit");
    			data.onclick = function(){
    				var box = document.getElementsByName("items");
    				var commmitData = "";
    				for(var i =0; i<box.length; i++){
    					if(box[i].checked == true ){
    						commmitData += box[i].value + ",";
    					}
    				}
    				var resultData = commmitData.substring(0,commmitData.length-1);
    				alert(resultData);
    			}
    			
    		</script>
    		
    		
    	</body>
    </html>
    

2.2.2 jQuery实现

2.2.2.1 注意语法(区别jQuery版本)
  • 下面以全选为例,如下:
    • 复杂写法:
      //1. 全选---复杂点写法
      var all = document.getElementById("checkAll");
      function funAll(){
      	// 1.1 循环处理
      	$("input[name='items']").each(function(){
      		// 下面两种写法高低版本的jQuery均可以
      		// $(this).attr("checked",true); 
      		this.checked = true;
      
      		// prop 适合高版本的jQuery
      		//$(this).prop("checked",true);
               	});
      	// 1.2 直接根据name处理
      	// $("input[name='items']").attr("checked", true);
      
      	// 注意:prop 适合高版本的jQuery
      	// $("input[name='items']").prop("checked", true); 
      }
      all.onclick = funAll;
      
    • 优化写法:
      $("#checkAll").click(function(){
      	$("input[name='items']").attr("checked", true);
      });
      
  • 再以全选/全不选为例(非按钮的情况),如下:
    • 点击 全选/全不选 ——复杂点逻辑:
      //5.1.1 点击 全选/全不选 复选框---使用多层this
      $("#checkAllOrNo").click(function(){
      	var parentFlag = this.checked;
      	$("input[name='items']").each(function(){
      		this.checked = parentFlag;
      	});
      });
      
    • 点击 全选/全不选 ——简单点逻辑
      //5.1.2 点击 全选/全不选 复选框----使用s(":checked")
      $("#checkAllOrNo").click(function(){
      	$("input[name='items']").each(function(){
      		this.checked = $("#checkAllOrNo").is(":checked");
      	});
      });
      
    • 点击各项目:
      //5.2 点击各项目复选框
      $("input[name='items']").each(function(){
      	$(this).click(function(){
      		// 点击任何一个复选框,全选/不全选 复选框都先设置为选中状态
      		$("#checkAllOrNo").attr("checked",true);
      		// 然后再循环所有的复选框,是否有未选中的
      		$("input[name='items']").each(function(){
      			if(!this.checked){
      				$("#checkAllOrNo").attr("checked",false);
      				return;
      			}
      		});
      	});
      });
      
  • 关于jQuery版本的一些可以看下面的文章,3.6中有介绍,
    js/jQuery 的一些常用操作(js/jQuery获取表单元素值 以及 清空元素值的各种实现方式)——附测试例子,拿来即能实现效果.
2.2.2.2 完整代码实现
  • 各情况代码,如下:
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8">
    		<title></title>
    		<!-- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script> -->
    		<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    
    	</head>
    	<body>
    		
    		<form method="post" action="">
    			
    			您想饲养的狗狗有?
    			<input type="checkbox" id="checkAllOrNo"/>全选/全不选
    			 
    			<br />
    			<input type="checkbox" name="items" value="边牧"/>边牧
    			<input type="checkbox" name="items" value="柯基"/>柯基
    			<input type="checkbox" name="items" value="秋田犬"/>秋田犬
    			<input type="checkbox" name="items" value="金毛"/>金毛
    			
    			<br />
    			<input type="button" id="checkAll" value="全选"/>
    			<input type="button" id="checkNoOne" value="全不选"/>
    			<input type="button" id="fanxuan" value="反选"/>
    			<input type="button" id="btnAllOrNO" value="全选/全不选"/>
    			<input type="button" id="commit" value="提交"/>
    			
    		</form>
    		
    		<script type="text/javascript">
    			
    			//1. 全选---复杂点写法
    			var all = document.getElementById("checkAll");
    			function funAll(){
    				// 1.1 循环处理
    				$("input[name='items']").each(function(){
    					// 下面两种写法高低版本的jQuery均可以
    					// $(this).attr("checked",true); 
    					this.checked = true;
    
    					// prop 适合高版本的jQuery
    					//$(this).prop("checked",true);
                	});
    				// 1.2 直接根据name处理
    				// $("input[name='items']").attr("checked", true);
    
    				// 注意:prop 适合高版本的jQuery
    				// $("input[name='items']").prop("checked", true); 
    			}
    			// all.onclick = funAll;
    
    			// 1. 全选---简单点写法
    			$("#checkAll").click(function(){
    				$("input[name='items']").attr("checked", true);
    			});
    			
    			//2.全不选
    			$("#checkNoOne").click(function(){
    				$("input[name='items']").attr("checked", false);
    			});
    			
    			//3.反选(直接取反)
    			$("#fanxuan").click(function(){
    				$("input[name='items']").each(function(){
    					this.checked = !(this.checked);//直接取反
    				});
    			});
    			
    			//4.全选/全不选----按钮操作
    			$("#btnAllOrNO").click(function(){
    				var selectedNum = 0;//0-全不选  >0-全选
    				$("input[name='items']:not(:checked)").each(function(){
    					selectedNum ++;//计算没有选中的项目个数
    				});
    				if(selectedNum > 0){
    					// 只要存在没有选中的话,就进行全选
    					$("input[name='items']").attr("checked", true);
    				}else{
    					// 全不选
    					$("input[name='items']").attr("checked", false);
    				}
    			});
    			
    			//5 全选/全不选——复选框操作
    			//5.1.1 点击 全选/全不选 复选框---使用多层this
    			// $("#checkAllOrNo").click(function(){
    			// 	var parentFlag = this.checked;
    			// 	$("input[name='items']").each(function(){
    			// 		this.checked = parentFlag;
    			// 	});
    			// });
    
    			//5.1.2 点击 全选/全不选 复选框----使用s(":checked")
    			$("#checkAllOrNo").click(function(){
    				$("input[name='items']").each(function(){
    					// 选中状态与 全选/全不选 的复选框保持一致即可
    					this.checked = $("#checkAllOrNo").is(":checked");
    				});
    			});
    
    			//5.2 点击各项目复选框
    			$("input[name='items']").each(function(){
    				$(this).click(function(){
    					// 点击任何一个复选框,全选/不全选 复选框都先设置为选中状态
    					$("#checkAllOrNo").attr("checked",true);
    					// 然后再循环所有的复选框,是否有未选中的
    					$("input[name='items']").each(function(){
    						if(!this.checked){
    							$("#checkAllOrNo").attr("checked",false);
    							return;
    						}
    					});
    				});
    			});
    			
    			//6.提交 获取选中的复选框
    			// 6.1 拼接字符串写法
    			$("#commit").click(function(){
    				var commmitData = "";
    				$("input[name='items']:checked").each(function(){
    					commmitData += $(this).val() + ",";
    				});
    				var resultData = commmitData.substring(0,commmitData.length-1);
    				alert(resultData);
    			});
    
    			// 6.2 数组写法
    			$("#commit").click(function(){
    				var commmitData = [];
    				$("input[name='items']:checked").each(function(){
    					commmitData.push($(this).val());
    				});
    				alert(commmitData);
    			});
    			
    		</script>
    		
    	</body>
    </html>
    

3. jQuery实现点击 行tr 实现checkBox选中 + 翻页勾选问题

3.1 jQuery实现点击 行tr 获取td中checkBox的值

3.1.1 方式1

  • 实现代码如下:
    // 1.1 点击tr获取tr中是checkbox的td的值----方式1
    $("#dogs_data tr").each(function(){
        var current = $(this);
        current.click(function(){
            var box = $(this).find(":checkbox");
            console.log(box);
            console.log(box.val());
        });
    });
    
  • 效果如下:
    在这里插入图片描述

3.1.2 方式2

  • 实现代码,如下:
    // 1.2 点击tr获取tr中是checkbox的td的值----方式2
    $("#dogs_data tr").each(function(){
        $(this).click(function(){
            var box = this.firstElementChild.firstElementChild;//获取checkbox元素标签
            console.log(box);
            console.log(box.value);//因为是标签,取值用.value
        });
    });
    
  • 实现效果,如下:
    在这里插入图片描述

3.2 jQuery实现点击 行tr 实现checkBox选中或取消

3.2.1 点击 tr 时,checkbox选中或取消

  • 实现代码,如下:
    $("#dogs_data tr").each(function(){
        $(this).click(function(){
            var box = this.firstElementChild.firstElementChild;//获取checkbox元素标签
            box.checked = !box.checked;// 直接取反
        });
    });
    
  • 实现效果,如下:
    在这里插入图片描述

3.2.2 点击 首行tr 时,实现全选或全不选

  • 实现代码如下:
    // 2.2 点击首行tr时(表头),实现全选或全不选
    $("#dogs_data tr:eq(0)").each(function(){
        $(this).click(function(){
            var box = this.firstElementChild.firstElementChild;//获取checkbox元素标签
            box.checked = !box.checked;// 直接取反
            $("input[name='dogIds']").each(function(){
                this.checked = box.checked;// 数据行的选中状态与首行的选中状态保持一致
            });
        });
    });
    
  • 实现效果如下:
    在这里插入图片描述

3.2.3 点击非首行tr时(数据列表行),全选或全不选自动切换

  • 实现代码如下:
    // 2.3 点击非首行tr时(数据列表行),全选或全不选自动切换
    $("#dogs_data tr:gt(0)").each(function(){
        $(this).click(function(){
            var box = this.firstElementChild.firstElementChild;//获取checkbox元素标签
            box.checked = !box.checked; // 数据行直接取反
            $("#checkAllOrNo").attr("checked",true);// 数行先设置选中
    
            // 然后循环数据行的checkbox,如果有未选中的,取消首行选中(为了少循环次数,直接从not(:checked)中循环)
            $("input[name='dogIds']:not(:checked)").each(function(){
                $("#checkAllOrNo").attr("checked",false);// 如果存在任意一个未选中,直接取消选中
                return;
            });
        });
    });
    
  • 效果如下(不是视频,不是很明显,需要的还需自己测试):
    在这里插入图片描述

3.3 翻页勾选问题

  • 如果想,支持翻页勾选,那就把每次勾选的缓存在页面中的一个输入框里,然后勾选一个追加一个,这个参考上面取值的方式直接拼接即可实现,此处就不再多说了。

3.4 附上述操作tr的全代码

  • 如下:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <!-- <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.js"></script> -->
        <script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    
        <style>
            table {
                border-collapse: collapse;
            }
            table tr th,td{
                border: 1px solid;
                width: 60px;
                text-align: center;
            }
    
            thead tr:hover{
                background-color: rgb(255, 127, 127);
            }
            tbody tr:hover{
                background-color: aquamarine;
            }
        </style>
    </head>
    <body>
    
    
    
        <table celllspacing="0" id="dogs_data">
            <thead>
                <tr>
                    <th>
                        <input type="checkbox" id="checkAllOrNo" />
                    </th>
                    <th>编号</th>
                    <th>姓名</th>
                    <th>年龄</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td>
                        <input type="checkbox" name="dogIds" value="A1001"/>
                    </td>
                    <td>A1001</td>
                    <td>麦兜</td>
                    <td>3</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" name="dogIds" value="A1002"/>
                    </td>
                    <td>A1002</td>
                    <td>贝塔</td>
                    <td>2</td>
                </tr>
                <tr>
                    <td>
                        <input type="checkbox" name="dogIds" value="A1003"/>
                    </td>
                    <td>A1003</td>
                    <td>泡泡</td>
                    <td>6</td>
                </tr>
            </tbody>
        </table>
    
        <script>
            // 1.1 点击tr获取tr中是checkbox的td的值----方式1
            // $("#dogs_data tr").each(function(){
            //     var current = $(this);
            //     current.click(function(){
            //         var box = $(this).find(":checkbox");
            //         console.log(box);
            //         console.log(box.val());
            //     });
            // });
    
            // 1.2 点击tr获取tr中是checkbox的td的值----方式2
            // $("#dogs_data tr").each(function(){
            //     $(this).click(function(){
            //         var box = this.firstElementChild.firstElementChild;//获取checkbox元素标签
            //         console.log(box);
            //         console.log(box.value);// 因为是标签,取值用.value
            //     });
            // });
    
            // 2.1 点击 行tr 实现checkBox选中或取消
            // $("#dogs_data tr").each(function(){
            //     $(this).click(function(){
            //         var box = this.firstElementChild.firstElementChild;//获取checkbox元素标签
            //         box.checked = !box.checked;// 直接取反
            //     });
            // });
    
            // 2.2 点击首行tr时(表头),实现全选或全不选
            $("#dogs_data tr:eq(0)").each(function(){
                $(this).click(function(){
                    var box = this.firstElementChild.firstElementChild;//获取checkbox元素标签
                    box.checked = !box.checked;// 直接取反
                    $("input[name='dogIds']").each(function(){
                        this.checked = box.checked;// 数据行的选中状态与首行的选中状态保持一致
                    });
                });
            });
    
            // 2.3 点击非首行tr时(数据列表行),全选或全不选自动切换
            $("#dogs_data tr:gt(0)").each(function(){
                $(this).click(function(){
                    var box = this.firstElementChild.firstElementChild;//获取checkbox元素标签
                    box.checked = !box.checked; // 数据行直接取反
                    $("#checkAllOrNo").attr("checked",true);// 数行先设置选中
    
                    // 然后循环数据行的checkbox,如果有未选中的,取消首行选中(为了少循环次数,直接从not(:checked)中循环)
                    $("input[name='dogIds']:not(:checked)").each(function(){
                        $("#checkAllOrNo").attr("checked",false);// 如果存在任意一个未选中,直接取消选中
                        return;
                    });
                });
            });
    
        </script>
    </body>
    </html>
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1293163.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【GAMES101】三维变换

games101的第四节课讲了三维变换和观察变换&#xff0c;我们这里先记录一下三维变换的知识&#xff0c;后面再讲观察变换 齐次坐标下的三维变换 类似于解决之前二维变换平移的问题&#xff0c;三维变换下用齐次坐标通过增加一个维度来表示&#xff0c;第四个维度为1表示这是个…

自动数据增广论文笔记 | AutoAugment: Learning Augmentation Strategies from Data

谷歌大脑出品 paper: https://arxiv.org/abs/1805.09501 这里是个论文的阅读心得&#xff0c;笔记&#xff0c;不等同论文全部内容 文章目录 一、摘要1.1 翻译1.2 笔记 二、(第3部分)自动增强:直接在感兴趣的数据集上搜索最佳增强策略2.1 翻译2.2 笔记 三、跳出论文&#xff0c…

Python超级详细的raise用法

当程序出现错误时&#xff0c;系统会自动引发异常。除此之外&#xff0c;Python 也允许程序自行引发异常&#xff0c;自行引发异常使用 raise 语句来完成。 很多时候&#xff0c;系统是否要引发异常&#xff0c;可能需要根据应用的业务需求来决定&#xff0c;如果程序中的数据…

智能配电房解决方案

智能配电房解决方案运用物联网、云计算、大数据、人工智能等先进技术&#xff0c;构建具备遥测、遥信、遥控、遥调、遥视功能的智能配电房&#xff0c;依托电易云-智慧电力物联网实现对配电室的全面感知、智能监控、优化运行、精益管理&#xff0c;提高供电可靠性&#xff0c;降…

系统设计之数据库

为您的项目选择正确的数据库是一项复杂的任务。许多数据库选项都适合不同的用例&#xff0c;很快就会导致决策疲劳。 我们希望这份备忘单提供高级指导&#xff0c;以找到符合您项目需求的正确服务并避免潜在的陷阱。 注意&#xff1a;Google 关于其数据库用例的文档有限。尽管…

笔记本用gpu运行tensorflow-gpu,keras写的老程序,结果与原来不一样,一脸懵逼。

先说结论我笔记一是rtx3050ti, 重点RTX30系列最低要求CUDA版本为11.1&#xff0c;否则最后跑程序会报错。再说现象&#xff0c;突发奇想想在笔记本上运行一个以前在1080titensorflow-gpu1.5.2,keras2.2.4上面写的一个图像分类模型&#xff0c;先用cpu模式 运行一下一切正常。如…

探索正则可视化工具:让编程更直观、高效

导语&#xff1a;在当今的编程世界中&#xff0c;正则表达式已成为不可或缺的技能。然而&#xff0c;理解和编写正则表达式往往是一项具有挑战性的任务。为了降低门槛&#xff0c;提高编程效率&#xff0c;正则可视化工具应运而生。 一、正则表达式的简介与历史 正则表达式&a…

基于JNI实现调用C++ SDK

基于JNI实现调用C SDK 背景分析解决实践 背景 上篇文章总结了几种Java项目调用C/C SDK项目方法&#xff0c;在逐一实践、踩坑后&#xff0c;最终还是敲定采用 JNI 方式进行实现。在文章开始的过程&#xff0c;会先大概讲讲笔者遇到的情况&#xff0c;因为封装方式需要根据实际…

文本润色工具有哪些,高质量的文本润色软件

在当今信息过载的时代&#xff0c;文本的重要性愈发凸显。即便是最精心构思的文章&#xff0c;若未经过仔细的润色&#xff0c;也难以达到最佳的表达效果。本文将专心分享文本润色工具的种类。 文本润色工具的种类 文本润色工具根据其功能和应用范围可以分为多个种类&#xff…

【C语言快速学习基础篇】之二控制语句、循环语句、隐式转换

文章目录 一、控制语句1.1、for循环1.2、while循环1.3、注意&#xff1a;for循环和while循环使用上面等同1.4、do while循环1.4.1while条件成立时1.4.2、while条件不成立时 C语言介绍 C语言是一门面向过程的计算机编程语言&#xff0c;与C、C#、Java等面向对象编程语言有所不同…

python pydoc生成API文档

pydoc是python内置的一个文档生成模块。 pydoc 模块会根据 Python 模块来自动生成文档。 生成的文档可在控制台中显示为文本页面&#xff0c;提供给 Web 浏览器访问或者保存为 HTML 文件。 对于模块、类、函数和方法&#xff0c;显示的文档内容取自文档字符串&#xff08;即 _…

202350读书笔记|《再别康桥:徐志摩诗选》——微风起,清芬酝藉,不减荼

202350读书笔记|《再别康桥&#xff1a;徐志摩诗选》——微风起&#xff0c;清芬酝藉&#xff0c;不减荼 《再别康桥&#xff1a;徐志摩诗选》我觉得有时候诗人是很狂热的&#xff0c;上头的感觉。 有几首很喜欢&#xff0c;节选如下&#xff1a; 偶然 我是天空里的一片云&…

【STM32】TIM定时器输入捕获

1 输入捕获 1.1 输入捕获简介 IC&#xff08;Input Capture&#xff09;输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变时&#xff08;上升沿/下降沿&#xff09;&#xff0c;当前CNT的值将被锁存到CCR中&#xff08;把CNT的值读出来&#xff0c;写入到…

JavaScript编程基础 – 闭包(Closure)

JavaScript编程基础 – 闭包 JavaScript Programming Essentials - Closure By JacksonML 闭包和JavaScript的作用域有关。 我们需要先理解闭包的概念。 本文简要介绍闭包函数以及环境状态&#xff0c;并用实例说明闭包的创建及其基本用法。希望对学习及开发有所帮助。 1. …

sql优化常用的几种方法

SQL优化是数据库管理和应用开发中的一个重要环节&#xff0c;它涉及到对SQL查询语句的改进&#xff0c;以提高执行效率&#xff0c;减少系统负载&#xff0c;并优化资源使用。以下是一些常用的SQL优化方法&#xff0c;我会尽量覆盖一些关键的点。 使用合适的数据类型 选择适…

通俗易懂的案例+代码解释AOP 切面编程

目录 1. 理解AOP2 Before2.1 controller层2.2 service层2.3 自定义注解2.4 切面 advice 3 After4 Around spring的三大核心&#xff1a;IOC控制反转、DI依赖注入、AOP面向切面编程 刚开始接触springboot项目&#xff0c;前两个使用的多&#xff0c;亲自使用AOP的机会并不多&…

python自动化测试如何做数据缓存 ?这个第三方包推荐给你,方便又简单!

1.数据缓存说明 数据缓存可以说也是项目开发中比不可少的一个工具 &#xff0c;像我们测试的系统中 &#xff0c;你都会见到像Redis一样的数据缓存库 。使用缓存数据库的好处不言而喻&#xff0c;那就是效率高 &#xff0c;简单数据直接放在缓存中 &#xff0c;存取简单方便 。…

探索Scrapy-spider:构建高效网络爬虫

Spider简介 Scrapy中的Spider是用于定义和执行数据抓取逻辑的核心组件。Spider负责从指定的网站抓取数据&#xff0c;并定义了如何跟踪链接、解析内容以及提取数据的规则。它允许您定制化地指定要抓取的网站、页面和所需的信息。Spider的作用是按照预定的规则爬取网页&#xf…

12.7 C++作业

自由发挥登录窗口的应用场景&#xff0c;实现一个登录窗口界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {//*******窗口相关设置********this->setWindowTitle("王者农药"); //设置窗口标题this->setWindowIcon(QIc…