JavaWeb系列十九: jQuery的DOM操作 上

查找节点, 修改属性

查找属性节点: 查找到所需要的元素之后, 可以调用jQuery对象的attr()方法用来 设置/返回 它的各种属性值

  • 设置属性值 $(“img”).attr(“width”, “300”);
  • 返回属性值 $(“img”).attr(“width”);

在这里插入图片描述

创建节点

  1. 创建节点: 使用jQuery的工厂函数$(): $(html标签); 会根据传入的html标记字符串创建一个jQuery对象并返回.
  2. 动态创建的新元素节点不会自动地添加到文档中, 而是需要使用其它方法将其插入到文档中
  3. 当创建单个元素时, 需要注意闭合标签和使用标准的XHTML格式. 例如创建一个<p>元素, 可以使用$(“<p/>”)或者$(“<p></p>”), 但不能使用$(“<p>”)或$(“</p>”)
  4. 创建文本节点就是在创建元素节点时直接把文本内容写出来; 创建属性节点也是在创建元素节点时一起创建

第1组方法(内部插入法)

  1. append(content): 向每个匹配的元素的内部的结尾处追加内容
    A.append(B) 解读: (1) A, B都是Jquery对象; (2) 表示把B对象插入到A对象内部的结尾处; (3) 结果是: B对象成为了A对象的子元素/子节点
  2. appendTo(content): 将每个匹配的元素追加到指定元素中的内部结尾处
    A.appendTo(B) 解读: (1) A, B都是Jquery对象; (2) 表示把A对象插入到B对象内部的结尾处; (3) 结果是: A对象成为了B对象的子元素/节点
  3. prepend(content): 向每个匹配的元素的内部的开始处插入内容
    A.prepend(B) 解读: (1) A, B都是Jquery对象; (2) 表示把B对象插入到A对象内部的开始处; (3) 结果是: B对象成为了A对象的子元素/节点
  4. prependTo(content): 将每个匹配的元素插入到指定元素中的内部开始处
    A.prependTo(B) 解读: (1) A, B都是Jquery对象; (2) 表示把A对象插入到B对象内部的开始处; (3) 结果是: A对象成为了B对象的子元素/节点

总结: 内部插入法是在元素内插入内容(该内容成为该元素的子元素或子节点)

第2组方法(外部插入法)

  1. after(content): 在每个匹配的元素之后插入内容
    A.after(B) 解读: A, B都是Jquery对象; (2) 把B对象插入到A对象的后面; (3) 结果是: B对象成为A对象的兄弟节点
  2. before(content): 在每个匹配的元素之前插入内容
    A.before(B) 解读: A, B都是Jquery对象; (2) 把B对象插入到A对象的前面; (3) 结果是: B对象成为A对象的兄弟节点
  3. insertAfter(content): 把所有匹配的元素插入到另一个指定的元素集合的后面
    A.insertAfter(B) 解读: (1) A, B都是Jquery对象; (2) 把A对象插入到B对象的后面; (3) 结果是: A对象成为B对象的后一个兄弟节点
  4. insertBefore(content): 把所有匹配的元素插入到另一个指定的元素集合的前面
    A.insertBefore(B) 解读: (1) A, B都是Jquery对象; (2) 把A对象插入到B对象的前面; (3) 结果是: A对象成为B对象的前一个兄弟节点

总结: 外部插入法是在元素的外面插入内容(其内容变为元素的兄弟节点)
注意: 以上方法不但能将新的DOM元素插入到文档中, 也能对原有的DOM元素进行移动

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>创建节点</title><script type="text/javascript" src="../script/jquery-3.6.0.min.js"></script><script type="text/javascript">$(function () {//添加重庆li到上海后面(用传统的dom方式)$("#btn1").click(function () {//1.创建重庆li元素var cq_li = document.createElement("li");//2.设置属性和内容cq_li.setAttribute("id", "cq");cq_li.setAttribute("name", "chongqing");cq_li.innerText = "重庆";//3.添加到指定元素的后面var sh_li = document.getElementById("sh");sh_li.append(cq_li);});//添加重庆li到上海后面(jquery完成节点添加)$("#btn2").click(function () {var $cq_li = $("<li id='cq' name='chongqing'>重庆</li>");//内部插入法, 相当于<li id="sh" name="shanghai">上海<li id='cq' name='chongqing'>重庆</li></li>$cq_li.appendTo($("#sh"));//外部插入法, 更合适$cq_li.insertAfter($("#sh"));});//添加济宁li到北京前(jquery完成节点添加)$("#btn3").click(function () {//创建济宁livar $jn_li = $("<li id='jn' name='jiNing'>济宁</li>");//添加到北京li前面, 此时不能使用内部插入法, 必须使用外部插入法, 不信看效果// $("#bj").prepend($jn_li);$jn_li.insertBefore($("#bj"));});//添加成都li到北京和上海之间(jquery完成节点添加)$("#btn4").click(function () {//创建成都livar $cd_li = $("<li id='cd' name='chengdu'>成都</li>");// $cd_li.insertAfter($("#bj"));$cd_li.insertBefore($("#sh"));})//添加成都li到吉林前面(jquery完成节点添加)$("#btn5").click(function () {//创建成都livar $cd_li = $("<li id='cd' name='chengdu'>成都</li>");$cd_li.insertBefore($("#jl"));})})</script>
</head>
<body>
<ul id="city"><li id="bj" name="beijing">北京</li><li id="sh" name="shanghai">上海</li><li id="jl" name="jilin">吉林</li><li id="xj" name="xinjiang">新疆</li>
</ul>
<input type="button" id="btn1" value="添加重庆li到上海后面(用传统的dom方式)">
<input type="button" id="btn2" value="添加重庆li到上海后面(jquery完成节点添加)">
<input type="button" id="btn3" value="添加济宁li到北京前(jquery完成节点添加)">
<input type="button" id="btn4" value="添加成都li到北京和上海之间(jquery完成节点添加)">
<input type="button" id="btn5" value="添加成都li到吉林前面(jquery完成节点添加)">
</body>
</html>

移动节点

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>移动节点</title><script type="text/javascript" src="../script/jquery-3.6.0.min.js"></script><script type="text/javascript">$(function () {//使用aflter插入法, 把地下城li移动到穿越火线后面$("#btn1").click(function () {//(1)使用外部插入法, 把地下城li移动到穿越火线后面(推荐)$("#dnf").insertAfter($("#jl"));//(2)使用内部插入法, 把地下城li移动到穿越火线后面(不推荐)$("#dnf").appendTo($("#jl"));});})</script>
</head>
<body>
您喜欢的城市:
<ul id="city"><li id="bj" name="beijing">北京</li><li id="sh" name="shanghai">上海</li><li id="jl" name="jilin">吉林</li>
</ul>
您爱好的游戏:
<ul id="game"><li id="dnf" name="dnf">地下城</li><li id="cf" name="cf">穿越火线</li>
</ul>
<input type="button" id="btn1" value="使用aflter插入法, 把地下城li移动到穿越火线后面">
</body>
</html>

删除节点

  1. remove(): 从DOM中删除所有匹配的元素, 传入的参数用于根据jQuery表达式来筛选元素. 当某个节点用remove()方法删除后, 该节点所包含的所有后代节点将被同时删除. 这个方法的返回值是一个指向已被删除的节点的引用
  2. empty(): 清空节点 - 清空元素中的所有后代节点(包括文本节点, 但不包含属性节点)
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>删除节点</title><script type="text/javascript" src="../script/jquery-3.6.0.min.js"></script><script type="text/javascript">$(function () {//删除所有<p>元素$("#btn1").click(function () {$("p").remove();//这不是jquery方法});//所有p清空$("#btn2").click(function () {$("p").empty();});//删除上海这个li$("#btn3").click(function () {//这个是完全移除$("#sh").remove();//这个会保留<li id="sh" name="shanghai"></li>$("#sh").empty();})});</script>
</head>
<body>
您喜欢的城市:
<ul id="city"><li id="bj" name="beijing">北京</li><li id="sh" name="shanghai">上海</li><li id="jl" name="jilin">吉林</li>
</ul>
<p>你好 </p> 刀剑神域 <p>亚丝娜</p>
<p name="test">你好 <span>刀剑神域</span> <a>桐谷和人</a></p>
<input type="button" id="btn1" value="删除所有<p>元素">
<input type="button" id="btn2" value="所有p清空">
<input type="button" id="btn3" value="删除上海这个li">
</body>
</html>

复制节点

  1. clone(): 克隆匹配的DOM元素, 返回值为克隆后的副本, 但此时复制的新节点不具有任何行为, 也就是说它没有把事件复制过来
  2. clone(true): 复制元素的同时也复制元素中的事件
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>克隆节点</title><script type="text/javascript" src="../script/jquery-3.6.0.min.js"></script><script type="text/javascript">$(function () {//点击p, 弹出文本信息$("p").click(function () {//隐式的传入一个this->p的dom对象alert("段落的内容=" + $(this).text());})//克隆p, 插入到按钮后面//1.$("p").clone() 表示克隆p元素, 但没有复制事件$("p").clone().insertAfter($("button"));//2.$("p").cloine() 表示克隆p元素, 同时复制事件$("p").clone(true).insertAfter($("button"));});</script>
</head>
<body>
<button>保存</button>
///
<p>段落1</p>
<p>段落2</p>
<p>段落3</p>
<p>段落4</p>
<p>段落5</p>
</body>
</html>

替换节点

  1. replaceWith(): 将所有匹配的元素都替换为指定的HTML或DOM元素.
    A.replaceWith(B) 用B来替换A(这里的B可以是HTML元素或DOM元素)
  2. replaceAll(): 颠倒了的replaceWith()方法
    A.replaceAll(B) 用A去替换B(这里的A只能是DOM元素, B一般是DOM元素, 还未遇到是HTML元素的情况)

注意: 若在替换之前, 已经在元素上绑定了事件, 替换后原先绑定的事件会与原先的元素一起消失

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>替换节点</title><script type="text/javascript" src="../script/jquery-3.6.0.min.js"></script><script type="text/javascript">$(function () {//1.将p元素替换为button元素(HTML或DOM元素)// (1)$("p").replaceWith("<button>亚丝娜</button>");// (2)var $button = $("<button value='亚丝娜'>亚丝娜</button>");$button.click(function () {alert($(this).val());})$("p").replaceWith($button);// (3)$button.replaceAll($("p"));//2.将p元素替换为超链接// (1)$("p").replaceWith("<a href='http://www.baidu.com'>超链接</a>");// (2)var $a = $("<a href='http://www.baidu.com'>超链接</a>");$("p").replaceWith($a);// (3)$a.replaceAll($("p"));});</script>
</head>
<body>
<h1>节点替换</h1>
<p>你好</p>
<p>刀剑神域</p>
<p>亚丝娜</p>
</body>
</html>

属性操作

  1. attr(): 获取属性和设置属性
  2. attr() 传递一个参数时, 表示获取某个元素指定的属性
  3. attr() 传递两个参数时, 表示为某个元素设置指定属性的值
  4. jQuery中有很多方法都是一个函数实现获取和设置. 比如: attr(), html(), text(), val(), height(), width(), css()等.

示例: var $button = $(“<button><span>亚丝娜</span></button>”);
alert($button.text()): -> 亚丝娜
alert($button.html()): -> <span>亚丝娜</span>
$(this).text(“桐人”); -> button标签会变成 <button>桐人</button>
$(this).html(“桐人”); -> button标签会变成 <button><span>桐人</span></button>

  1. removeAttr(): 删除指定元素的属性

样式操作

  1. 获取class和设置class: class是元素的一个属性, 所以获取class和设置lass都可以使用attr()方法来完成
  2. 追加样式: addClass()
  3. 移除样式: removeClass() — 从匹配的元素中删除全部或指定的class
  4. 切换样式: toggleClass() — 控制样式上的重复切换. 如果类名存在则删除它, 如果类名不存在则添加它
  5. 判断是否具有某个样式: hasClass() — 判断元素中是否含有某个class. 如果有, 返回true; 如果没有,返回false
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>样式操作</title><style>input {height: 40px;margin-top: 5px;}div {width: 200px;height: 200px;margin: 20px;float: left;}.one {background-color: pink;}</style><script type="text/javascript" src="../script/jquery-3.6.0.min.js"></script><script type="text/javascript">$(function () {//1.获取class和设置class都可以使用attr()方法来完成--给id为first的元素添加.one样式$("#btn01").click(function () {$("#first").attr("class", "one");})//2.追加样式: addClass()--给id为first的元素添加.one样式$("#btn02").click(function () {$("#first").addClass("one");})//3.移除样式: removeClass()--从匹配的元素中删除全部或指定的样式$("#btn03").click(function () {$("#first").removeClass("one");})//4.切换样式: toggleClass()--给id为first的元素切换.one样式(如果类名存在就删除, 如果类名不存在就添加)$("#btn04").click(function () {$("#first").toggleClass("one");})//5.判断是否含有某个样式: hasClass()--判断元素中是否含有某个class.如果有,返回true;如果没有,返回false$("#btn05").click(function () {alert($("#first").hasClass("one"));})});</script>
</head>
<body>
<input type="button" value="获取class和设置class都可以使用attr()方法来完成--给id为first的元素添加.one样式" id="btn01"/><br/>
<input type="button" value="追加样式: addClass()--给id为first的元素添加.one样式" id="btn02"/><br/>
<input type="button" value="移除样式: removeClass()--从匹配的元素中删除全部或指定的样式" id="btn03"/><br/>
<input type="button" value="切换样式: toggleClass()--给id为first的元素切换.one样式" id="btn04"/><br/>
<input type="button" value="判断是否含有某个样式: hasClass()--判断元素中是否含有某个class.如果有,返回true;如果没有,返回false" id="btn05"/><br/>
<div id="first">first</div>
<div id="second">second</div>
</body>
</html>

获取html 文本和值

  1. 设置或返回所选元素的内容(包括HTML标记): html()
  2. 读取或设置所选元素的文本内容: text(). 该方法既可以用于HTML也可以用于XML文档
  3. 读取或设置某个元素的值: val(). 该方法类似JavaScript中的value属性, 对于文本框input, 下拉框select, 单选框radio, 该方法可以返回元素的值

this.defaultValue: 表单元素的默认值属性(this是dom对象, 不是Jquery对象)

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>val()练习</title><script type="text/javascript" src="../script/jquery-3.6.0.min.js"></script><script type="text/javascript">$(function () {//1.给btn01绑定一个获取焦点事件//  当用户把光标定位到输入框btn01时, 该事件就会被触发$("#btn01").focus(function () {//获取->判断//获取到当前值var currentVal = $(this).val();//如果当前值就是默认值, 就清空, 让用户输入自己的值if (currentVal == this.defaultValue) {$(this).val('');}})//2.给btn01绑定一个失去焦点事件//  当用户的光标离开输入框, 就会触发该事件$("#btn01").blur(function () {//获取当前值var currentVal = $(this).val();//如果当前值为'',说明用户没有输入内容//就恢复显示默认信息if (currentVal == '') {$(this).val(this.defaultValue);}})});</script>
</head>
<body>
<input type="text" value="用户邮箱/手机号/用户名" id="btn01"/><br/>
<input type="password" value="" id="btn02"/><br/>
<input type="button" value="登录" id="btn03"/>
</body>
</html>

🌳常用遍历节点方法

常用遍历节点方法

  1. 取得匹配元素的所有子元素组成的集合: children() . 该方法只考虑子元素而不考虑任何后代元素(隔代元素不考虑)
  2. $(selector).find(filter)方法返回被选元素的后代元素, 包括直接子元素
  3. 取得匹配元素后面的同辈元素的集合: next()(紧邻)/nextAll()(所有)
  4. 取得匹配元素前面的同辈元素的集合: prev()(紧邻)/prevAll()(所有)
  5. 取得匹配元素前后所有的同辈元素: siblings()
  6. 获取指定的第几个元素: nextAll().eq(index)
  7. 对获取到的同辈元素进行过滤 nextAll().filter(“标签”)
  8. 取得匹配元素的直接父元素: parent()
  9. 取得匹配元素的所有祖先元素: parents(“元素标签”)
    参考👉
<html lang="en">
<head><meta charset="UTF-8"><title>遍历元素</title><style>input[type=button] {height: 30px;}</style><script type="text/javascript" src="script/jquery-3.6.0.min.js"></script><script type="text/javascript">$(function () {//1.查找class为one的div元素的所有子元素$("#btn01").click(function () {$("div.one").children().each(function () {alert("子div的内容是= " + $(this).text());})//获取指定第几个子元素, eq(1), 表示获取第2个子元素(索引从0开始)alert($("div.one").children().filter("div").eq(1).text());})//2.查找class为one的div元素的class为five的后代元素$("#btn02").click(function () {alert($("div.one").find("div:eq(5)").text());})//3.获取后面的同辈div元素(class为one的div元素)$("#btn03").click(function () {$("div.one").nextAll().filter("div").each(function () {alert("后面同辈的div的内容是= " + $(this).text());})//获取指定第几个元素, eq(1), 表示获取第2个子元素(索引从0开始)alert($("div.one").nextAll().filter("div").eq(1).text());//如果我们希望获取后面紧邻的同辈元素alert("后面紧邻的同辈元素= " + $("div.one").next().text());});//4.获取前面的同辈div元素(class为one的div元素)$("#btn04").click(function () {$("div.one").prevAll().filter("div").each(function () {alert("前面同辈的div的内容是= " + $(this).text());})//规则: 越靠近$(this)元素,索引越小; 反之越远离, 索引越大//获取前一个紧邻的元素: eq(0), 表示获取第1个子元素(索引从0开始)alert($("div.one").prevAll().filter("div").eq(0).text());//如果我们希望获取前面紧邻的同辈元素alert("前面紧邻的同辈元素= " + $("div.one").prev().text());});//5.获取所有同辈的div元素(class为one的div元素)$("#btn05").click(function () {$("div.one").siblings().filter("div").each(function () {alert("所有同辈的div的内容是= " + $(this).text());});//获取第几个元素, eq(2), 表示获取第3个子元素(索引从0开始)alert($("div.one").siblings().filter("div").eq(2).text());})//6.获取父元素及祖先元素(class为five的div元素)$("#btn06").click(function () {//(1)获取父元素: 匹配元素集合中每个元素的直接父元素var $div = $("div.five").parent();//返回的是一个对象alert($div.html());//获取父元素的父元素, 返回的是一个对象var parent = $("div.five").parent().parent();//获取到了class="one"的祖先元素alert(parent.attr("class"));//(2)获取祖先元素: 返回的是一个数组, 当前匹配元素的所有祖先元素, 包括父元素var parents = $("div.five").parents("div");parents.each(function () {//获取到了id=five, class=one的元素alert($(this).html());})})})</script>
</head>
<body>
<input type="button" value="查找class为one的div元素的所有子元素" id="btn01"/><br/>
<input type="button" value="查找class为one的div元素的class为five的后代元素" id="btn02"/><br/>
<input type="button" value="获取后面的同辈div元素(class为one的div元素)" id="btn03"/><br/>
<input type="button" value="获取前面的同辈div元素(class为one的div元素)" id="btn04"/><br/>
<input type="button" value="获取所有的同辈div元素(class为one的div元素)" id="btn05"/><br/>
<input type="button" value="获取父元素及祖先元素(class为five的div元素)" id="btn06"/><br/>
<hr/>
<div>aaaaaaaaaaaa</div>
<div class="one"><div id="one">xxxxxxxx one</div><div id="two">xxxxxxxx two</div><div id="three">xxxxxxxx three</div><div id="four">xxxxxxxx four</div><div id="five">xxxxxxxx five_01<div class="five">xxxxxxxx five_02</div></div>
</div>
<div>bbbbbbbbbbbb</div>
<div>cccccccccccc</div>
<div>dddddddddddd</div>
</body>
</html>

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

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

相关文章

硬核实力再亮,玩出梦想科技发布全球首款安卓系统空间计算机

6月25日&#xff0c;玩出梦想科技在新加坡召开全球新品发布会&#xff0c;正式发布全球首款安卓系统空间计算机——玩出梦想MR&#xff0c;填补了空间计算机在安卓生态的空白。 作为品牌沉淀两年的破晓之作&#xff0c;玩出梦想MR以业内领先软硬件配置&#xff0c;强大自研算法…

解决了!暗影精灵8 Pro酷睿版无声音,扬声器和麦克风都没有声音!

困扰好几天的问题解决了&#xff01; 暗影精灵8 Pro酷睿版无声音&#xff0c;扬声器和麦克风都没有声音&#xff01;&#xff01;方法适用于OMEN by HP Gaming Laptop 16-k0xxx&#xff08;暗影精灵8 Pro酷睿版&#xff09;的Windows 10声卡驱动&#xff01; 朋友们&#xff…

【应用开发一】LED开发

文章目录 1应用层控制外设的两种方式2 sysfs和/sys关系3 LED控制方式3.1 基本情况3.2 LED属性文件介绍3.3 命令行属性测试3.4 led程序3.5 开发板上测试 1应用层控制外设的两种方式 使用设备文件控制 在Linux系统下&#xff0c;一切皆是文件。应用层控制底层硬件同样也是通过文…

第100+12步 ChatGPT学习:R实现KNN分类

基于R 4.2.2版本演示 一、写在前面 有不少大佬问做机器学习分类能不能用R语言&#xff0c;不想学Python咯。 答曰&#xff1a;可&#xff01;用GPT或者Kimi转一下就得了呗。 加上最近也没啥内容写了&#xff0c;就帮各位搬运一下吧。 二、R代码实现KNN分类 &#xff08;1&a…

【Docker】Consul 和API

目录 一、Consul 1. 拉取镜像 2. 启动第一个consul服务&#xff1a;consul1 3. 查看consul service1 的ip地址 4. 启动第二个consul服务&#xff1a;consul2&#xff0c; 并加入consul1&#xff08;使用join命令&#xff09; 5. 启动第三个consul服务&#xff1a;consul3&…

攻击者开始使用 XLL 文件进行攻击

近期&#xff0c;研究人员发现使用恶意 Microsoft Excel 加载项&#xff08;XLL&#xff09;文件发起攻击的行动有所增加&#xff0c;这项技术的 MITRE ATT&CK 技术项编号为 T1137.006。 这些加载项都是为了使用户能够利用高性能函数&#xff0c;为 Excel 工作表提供 API …

【SQL Server数据库】关系模式与关系代数

目录 一、请用关系代数完成下列查询 1. 求 供应工程J1 零件P1的供应商号码SNO&#xff1b; 2. 求 供应工程J1 零件&#xff08;P&#xff09;为红色 的供应商号码SNO&#xff1b; 3. 求 没有使用 天津供应商&#xff08;P&#xff09;生产的红色零件&#xff08;S&#xff0…

pycharm中的使用技巧

1、更改主题&#xff1a;找到设置&#xff0c;然后更改主题 点击选择自己喜欢的主题&#xff0c;然后就可以更改主题了 2、设置字体的快捷键 找到设置&#xff0c;如下&#xff1a; 找到increase&#xff0c;如下&#xff1a; 右键选择&#xff0c;增加字体快捷键 按住ctrl滑轮…

Excel 查找后隐去右边列

Excel 有几列数字 ABC11002042002202100102326027010841199100512100100 当给定参数时&#xff0c;请从每行找到该参数&#xff0c;隐去右边的列。如果某行不含该参数&#xff0c;则隐去整行。当参数是 100 时&#xff0c;结果如下&#xff1a; ABC710082021009119910010121…

shell之免交互

免交互 交互&#xff1a;发出指令控制指令的运行&#xff0c;程序再接收到指令的效果做出对应的反应。 免交互&#xff1a;间接的&#xff0c;通过第三方的方式把指令传送给程序&#xff0c;不用直接的下达指令 Hhere Document 免交互 这是命令行格式&#xff0c;也可以写在脚本…

QTableWidget的使用

使用QTableWidget&#xff0c;初始化数据、设置列头及格式&#xff0c;设置行数&#xff0c;设置每个单元格的编辑&#xff0c;间隔行底色变换、行选择 &#xff0c;模式&#xff0c;单元格选择模式、插入行 、追加行、删除行&#xff0c;单元格加图标&#xff0c;单元格显示ch…

好记性不如烂笔头(三)——文件保存后打开呈现乱码问题

现象 请随博主进行下列操作&#xff0c;神奇的事情会发生—— 1、新建记事本&#xff0c;里面输入“同”字&#xff0c;保存为ANSI格式 2、再次打开会发现&#xff0c;“同”已经变成了乱码 3、类似的字还有很多&#xff0c;例如“同学”的“学”。而有些字则不会出现这种情况…

3_电机的发展及学习方法

一、电机组成及发展 1、什么是励磁&#xff1f; 在电磁学中&#xff0c;励磁是通过电流产生磁场的过程。 发电机或电动机由在磁场中旋转的转子组成。磁场可以由 永磁体或励磁线圈产生。对于带有励磁线圈的机器&#xff0c;电流必须在线圈中流动才能产生&#xff08;激发&#x…

香港服务器托管对外贸行业必要性和优势

在当今全球化的经济环境下&#xff0c;外贸企业面临着前所未有的机遇与挑战。其中&#xff0c;服务器托管的选择对于外贸企业的运营效率和市场拓展具有举足轻重的作用。香港服务器&#xff0c;凭借其独特的地理位置、优质的网络环境和卓越的服务性能&#xff0c;一直是外贸企业…

“Hello, World” 的历史

“Hello, World!” —— 初学者进入编程世界的第一步 由布莱恩柯林汉 撰写的“Hello, world”程序 (1978年) 布莱恩W.克尼汉&#xff08;Brian W. Kernighan&#xff09;—— Unix 和 C 语言背后的巨人 布莱恩W.克尼汉 布莱恩W.克尼汉在 1942 年出生在加拿大多伦多&#xff…

OS中断机制-嵌套和竞争

对于FreeRTOS最好不去用中断嵌套,中断嵌套会增加堆栈空间的使用,因为每个中断服务程序都需要保存和恢复寄存器状态,这可能会耗尽有限的堆栈空间,从而导致系统故障。以及中断嵌套时,不同的中断服务程序可能会竞争访问共享资源,从而增加死锁的风险。这可能会导致系统出现故…

Verilog进行结构描述(structural modeling)(一):基本概念

目录 1.结构描述(structural modeling)的内容&#xff1a;2.实例 微信公众号获取更多FPGA相关源码&#xff1a; 1.结构描述(structural modeling)的内容&#xff1a; 用门来描述器件的功能基于基本元件和底层模块例化语句最接近实际的硬件结构主要使用元件的定义、使用声明以…

Flink——最流批的大数据框架(流批一体)

Apache Flink基础教程 资料来源&#xff1a;Apache Flink Tutorial (tutorialspoint.com) Apache Flink是Apache Hadoop的开源本地分析数据库。它由Cloudera、MapR、Oracle和Amazon等供应商提供。本教程中提供的示例是使用Cloudera Apache Flink开发的。 本教程是为那些想要学…

fork 是一个创建新进程的系统调用

在计算机科学中&#xff0c;fork 是一个创建新进程的系统调用。具体来说&#xff0c;fork 调用会创建一个与当前进程几乎完全相同的副本&#xff0c;包括父进程的内存布局、环境变量、打开的文件描述符等。这个新的进程被称为子进程&#xff0c;而原始进程被称为父进程。 以下…

光伏开发有没有难点?如何解决?

随着全球对可再生能源的日益重视&#xff0c;光伏技术作为其中的佼佼者&#xff0c;已成为实现能源转型的关键手段。然而&#xff0c;光伏开发并非一帆风顺&#xff0c;其过程中也面临着诸多难点和挑战。本文将对这些难点进行探讨&#xff0c;并提出相应的解决策略。 一、光伏开…