JS-项目实战-点击水果名修改特定水果库存记录

1、fruit.js

function $(name) {if (name) {//假设name是  #fruit_tblif (name.startsWith("#")) {name = name.substring(1);   //fruit_tblreturn document.getElementById(name);} else {return document.getElementsByName(name);  //返回的是NodeList类型}}
}//当页面加载完成后执行后面的匿名函数
window.onload = function () {//get:获取     Element:元素    By:通过...方式//getElementById()根据id值获let fruitTbl = $("#fruit_tbl");//table.rows:获取这个表格的所有的行,返回数组let rows = fruitTbl.rows;//从 1 开始,因为 第 0 行是表头,不需要绑定事件for (let i = 1; i < rows.length - 1; i++) {let tr = rows[i];//事件动态绑定tr.onmouseover = showBGColor;tr.onmouseout = clearBGColor;//cell:单元格、细胞//获取这一行的所有的单元格let tds = tr.cells;let priceTD = tds[2];//绑定鼠标悬浮事件priceTD.onmouseover = showHand;//绑定点击事件priceTD.onclick = editPrice//给删除小图标绑定鼠标悬浮和点击事件let delImgTd = tds[5];let delImg = delImgTd.firstChild;delImg.onmouseover = showHand;delImg.onclick = delFruit;//给名称单元格绑定鼠标悬浮和点击事件let fnameTD = tds[1];fnameTD.onmouseover = showHand;fnameTD.onclick = toEdit;}zj();//获取全选这个复选框let ckAll = $("#ckAll");ckAll.onchange = myCkAll;//获取所有的普通复选框let ckArr = $("ck");ckArr.forEach((item, index) => {item.onchange = myCk;});//给批量删除按钮绑定点击事件const delsBtn = $("#delsBtn");delsBtn.onclick = delFruits;//绑定添加按钮的点击事件//添加按钮有两个功能:1、新增   2、修改$("#addFruit").onclick = addOrUpdateFruit;
};
toEdit = function () {let fnameTD = event.srcElement;let fname = fnameTD.innerText;let tr = fnameTD.parentElement;let rowIndex = tr.rowIndex;$("#fid").value = rowIndex;$("#fname").value = fname;$("#price").value = tr.cells[2].innerText;$("#fcount").value = tr.cells[3].innerText;
};
add = function () {let fname = $("#fname").value;let price = parseInt($("#price").value);let fcount = parseInt($("#fcount").value);let xj = price * fcount;let fruitTbl = $("#fruit_tbl");//第 1 步:新增一行//insertRow()会在表格中插入一行,不带参数时在末尾插入//insertRow(1)会在索引为1的位置插入一个新行let tr = fruitTbl.insertRow(fruitTbl.rows.length - 1);//insertCell()插入单元格let ckTD = tr.insertCell();let fnameTD = tr.insertCell();let priceTD = tr.insertCell();let fcountTD = tr.insertCell();let xjTD = tr.insertCell();let delImgTD = tr.insertCell();//第 2 步:向每一个单元格填充内容ckTD.innerHTML = "<input type='checkbox' name='ck'/>";fnameTD.innerText = fname;priceTD.innerText = price;fcountTD.innerText = fcount;xjTD.innerText = xj;delImgTD.innerHTML = "<img src='imgs/del.png' class='delBtn'/>";//第 3 步:绑定相关事件//给新的这一行绑定鼠标悬浮和离开事件tr.onmouseover = showBGColor;tr.onmouseout = clearBGColor;//给复选框绑定状态改变事件ckTD.firstChild.onchange = myCk;//给单价单元格绑定鼠标悬浮以及点击事件priceTD.onmouseover = showHand;priceTD.onclick = editPrice;//给删除小图标绑定鼠标悬浮以及点击事件let imgBtn = delImgTD.firstChild;imgBtn.onmouseover = showHand;imgBtn.onclick = delFruit;//给名称单元格绑定鼠标悬浮和点击事件fnameTD.onmouseover = showHand;fnameTD.onclick = toEdit;};
update = function (fid) {let fname = $("#fname").value;let price = parseInt($("#price").value);let fcount = parseInt($("#fcount").value);let xj = price*fcount;let fruitTbl = $("#fruit_tbl");let tr = fruitTbl.rows[fid];let tds = tr.cells;tds[1].innerText = fname;tds[2].innerText = price;tds[3].innerText = fcount;tds[4].innerText = xj;$("#fid").value = 0;
};
addOrUpdateFruit = function () {let fid = parseInt($("#fid").value);if (fid && fid != 0) {update(fid);} else {add();}zj();
};
delFruits = function () {if (confirm("是否确认批量删除?")) {let fruitTbl = $("#fruit_tbl");let rows = fruitTbl.rows;let ckArr = $("ck");// for (let i = rows.length - 3; i >= 0; i--) {//     if (ckArr[i].checked) {//        fruitTbl.deleteRow(i + 1);//     }// }for (let i = rows.length - 3; i >= 0; i--) {if (ckArr[i].checked) {let rowIndex = ckArr[i].parentElement.parentElement.rowIndex;fruitTbl.deleteRow(rowIndex);}}zj();}
};
myCk = function () {let ck = event.srcElement;if (!ck.checked) { //说明是取消选中,则全选这个复选框一定是不选中的$("#ckAll").checked = false;} else {let ckArr = $("ck");//NodeList 转化成 Array 的三种解决方法:// 1、//let ckArr2 = Array.prototype.slice.call(ckArr);//$("#ckAll").checked = ckArr2.every(item => item.checked);//2、//$("#ckAll").checked = [...ckArr].every(item => item.checked);//3、let ckArr2 = Array.from(ckArr);$("#ckAll").checked = ckArr2.every(item => item.checked);//4、直接使用for循环,遍历NodeList// let flag = true;// for (let i = 0; i < ckArr.length; i++) {//     if (!ckArr[i].checked) {//         flag = false;//         break;//     }// }// $("#ckAll").checked = flag;}
};
myCkAll = function () {let ckAll = $("#ckAll");let flag = ckAll.checked;//debuggerlet ckArr = $("ck");for (let i = 0; i < ckArr.length; i++) {ckArr[i].checked = flag;}
};
delFruit = function () {if (window.confirm("是否删除?")) {let fruitTbl = $("#fruit_tbl");let delImg = event.srcElement;if (delImg && delImg.tagName == "IMG") {let tr = delImg.parentElement.parentElement;//tr.rowIndex获取当前tr这一行的行索引let rowIndex = tr.rowIndex;//table对象有一个方法:deleteRow,能够删除指定索引位置的行fruitTbl.deleteRow(rowIndex);//重新计算总计zj();}}
};
editPrice = function () {let priceTD = event.srcElement;//inner:在...内部let oldPrice = priceTD.innerText;//innerHTML:在节点内部填充一段HTML代码//priceTD.innerHTML = "<input type='text' size='2' value='"+oldPrice+"'/>";priceTD.innerHTML = "<input type='text' size='2'/>";/*** <td><input type="text" size="2"/></td>* first:第一个 child:孩子* firstChild:第一个子节点* @type {ActiveX.IXMLDOMNode | ChildNode | (() => (Node | null))}*/let priceInput = priceTD.firstChild;priceInput.value = oldPrice;priceInput.select();//绑定失去焦点事件priceInput.onblur = updatePrice;//输入框绑定键盘摁下事件,用于判断摁下的值是否合法priceInput.onkeydown = ckInput;
};
ckInput = function () {// 0-9:48-57    backspace:8    enter:13let kc = event.keyCode;if (!((kc >= 48 && kc <= 57) || kc == 8 || kc == 13)) {//取消事件event.returnValue = false;}if (kc == 13) {event.srcElement.blur();}
};
updatePrice = function () {let priceInput = event.srcElement;let newPrice = priceInput.value;let priceTD = priceInput.parentElement;priceTD.innerText = newPrice;xj(priceTD.parentElement)
};
xj = function (tr) {if (tr && tr.tagName == "TR") {let tds = tr.cells;let priceTD = tds[2];let fcountTD = tds[3];let xjTD = tds[4];let price = parseInt(priceTD.innerText);let fcount = parseInt(fcountTD.innerText);let xj = price * fcount;xjTD.innerText = xj;//同时更新总计zj();}
};
zj = function () {let fruitTbl = $("#fruit_tbl");let rows = fruitTbl.rows;let total = 0;for (let i = 1; i < rows.length - 1; i++) {let tr = rows[i];let xj = parseInt(tr.cells[4].innerText);total += xj;}rows[rows.length - 1].cells[1].innerText = total;
};
function showHand() {let priceTD = event.srcElement;//cursor光标priceTD.style.cursor = "pointer";
}
function showBGColor() {//window.event表示当前发生的事件 ”window.“可以省略// console.log(window.event);// alert(window.event);let obj = window.event.srcElement;//alert(obj);//console.log(obj);   //发现obj是td,而不是tr。事件传递现象if (obj.tagName == "TD") {let td = obj;//parentElement:父元素   td的父元素是tr。tr有很多td子元素let tr = td.parentElement;tr.style.backgroundColor = "purple";//获取当前所有单元格,然后设置单元格中字体的颜色let tds = tr.cells;for (let i = 0; i < tds.length; i++) {tds[i].style.color = "white";}}}
function clearBGColor() {let td = window.event.srcElement;if (td.tagName == "TD") {let tr = td.parentElement;tr.style.backgroundColor = "transparent";//获取当前行所有单元格,然后设置单元格中字体的颜色let tds = tr.cells;for (let i = 0; i < tds.length; i++) {tds[i].style.color = "#031f02";}}
}

2、fruit.html 

<!DOCTYPE html>
<html lang="zh_CN">
<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>js-DOM/BOM实战</title><link href="style/fruit.css" rel="stylesheet"></link><script src="js/鼠标悬浮和离开事件.js"></script>
</head>
<body>
<div id="div0"><div id="div_title">欢迎使用水果库存系统</div><div id="div2"><table id="fruit_tbl"><tr><th class="w10"><input type="checkbox" id="ckAll"/></th><th class="w20">名称</th><th class="w20">单价</th><th class="w20">数量</th><th class="w20">小计</th><th class="w10"><input type="button" value="批量删除" id="delsBtn"/></th></tr><!-- on:当...时候  mouse:鼠标  over:在...上--><!--当鼠标悬浮在这个tr上时,调用showBGColor()这个方法--><tr><td><input type="checkbox" name="ck"/></td><td>苹果</td><td>5</td><td>2</td><td>10</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" name="ck"/></td><td>菠萝</td><td>3</td><td>5</td><td>15</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" name="ck"/></td><td>哈密瓜</td><td>4</td><td>5</td><td>20</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" name="ck"/></td><td>葡萄</td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" name="ck"/></td><td>青梅</td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" name="ck"/></td><td>人参果</td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" name="ck"/></td><td>菠萝蜜</td></td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td><input type="checkbox" name="ck"/></td><td>西红柿</td><td>10</td><td>5</td><td>50</td><td><img src='imgs/del.png' class="delBtn"/></td></tr><tr><td colspan="2">总结:</td><td colspan="4">0</td></tr></table></div><div id="div3"><p>编辑库存记录</p><table id="fruit_add_tbl"><input type="hidden" id="fid" value="0"/><tr><th class="w30">名称:</th><td><input type="text" id="fname"/></td></tr><tr><th>单价:</th><td><input type="text" id="price"/></td></tr><tr><th>数量:</th><td><input type="text" id="fcount"/></td></tr><tr><th colspan="2"><input type="button" value="确定" id="addFruit"/><input type="reset" value="重填"/></th></tr></table></div>
</div>
</body>
</html>

3、fruit.css

*{color:rgb(3, 31, 2);font-weight: lighter;
}
body{padding:0;margin:0;background-color: rgb(3, 31, 2);
}
#div0{width:80%;border:0px solid red;background-color: rgb(209, 230, 235);margin-left:10%;padding-top:48px;padding-bottom:48px;margin-top:8px;
}
#div_title{width:80%;margin-left:10%;text-align: center;font-size:24px;letter-spacing: 4px;margin-bottom:16px;
}
#div2{margin-left:10%;border:0px solid red;width:80%;
}
.delBtn{width:16px;height:16px;
}
#fruit_tbl , #fruit_tbl td, #fruit_tbl th {border:1px solid lightgray;text-align: center;
}
#fruit_tbl{width:100%;line-height: 32px;border-collapse: collapse;
}
.w10{width:10%;
}
.w15{width:15%;
}
.w20{width:20%;
}
.w30 {width: 30%;
}
#div3{margin-left:20%;border:1px solid lightgray;width:60%;margin-top: 16px;padding-bottom: 16px;
}
#fruit_add_tbl {width: 40%;margin-left: 30%;border: 1px solid lightgray;border-collapse: collapse;
}
#fruit_add_tbl th,#fruit_add_tbl td {border: 1px solid lightgrey;padding: 4px;
}
#div3 p {text-align: center;letter-spacing: 4px;
}
#fruit_add_tbl input[type="button"],#fruit_add_tbl input[type="reset"] {width: 100px;height: 28px;border: 1px solid lightgray;
}
#fruit_add_tbl input[type="text"] {border: 1px solid lightgray;height: 22px;
}

 4、value="0"

  •  隐藏域value默认值是0,表示添加操作

 

 5、value !="0"

  •  当隐藏域中的value不等于0时就是修改操作,水果名对应行索引,$("#fid").value = rowIndex;

 

 

 

 

 

 

 5、隐藏域

隐藏域(hidden input)是 HTML 的一种表单元素,它不会在浏览器中被显示出来,但其值可以被提交到服务器端。它的作用主要有以下几个方面:

  1. 传递数据:在表单提交时,可以将某些需要 传递到后台的数据 以隐藏域的形式添加到表单中,并在后台进行处理。

  2. 值的保存:在某些情况下,页面需要保留某些数据,可以将这些数据保存到隐藏域中,以便在后续的操作中使用。

  3. 安全:有些数据不希望被用户修改,这样的数据可以设置为隐藏域,在页面提交时无法被用户修改,从而提高了数据的安全性。

  4. 状态传递:在一些需要状态传递的业务场景中,使用隐藏域记录当前状态,以便在后续的操作中使用。

总之,隐藏域在表单提交中起到了非常重要的作用,在处理一些数据传递、状态传递等方面非常方便。

隐藏域(hidden field)是一种 HTML 标签,是网页表单元素之一。它的作用是在表单提交时 向服务器传递一些额外的数据,这些数据可以被用户看不到和修改。通常,它用来存储一些不需要用户输入的数据,比如某个操作的标识、会话 ID、用户 ID 等等。

隐藏域的基本语法如下:

<input type="hidden" name="参数名" value="参数值">

其中,type 属性值为 "hidden",name 属性指定了参数名,value 属性指定了参数的值。在表单中可以定义多个隐藏域,它们的值会在表单提交时一起被 发送到服务器端。在 服务器端,程序可以通过接收这些参数来完成相应的操作。

 

在网页中,隐藏域(Hidden Field)是一种不可见的表单元素,它的作用是 存储表单中的数据并将其传递到服务器端,以便后续的处理。

通常情况下,表单元素都是可见的,用户可以通过输入框、下拉菜单等控件输入数据并提交表单,但有时候我们需要在表单中增加一些额外的数据,例如某个操作的标识符、当前用户的身份信息等,这些数据不需要用户手动输入,也不需要展示给用户,此时就可以使用隐藏域来存储这些数据。

在使用隐藏域时,需要注意以下几点:

  1. 隐藏域的值可以通过 JavaScript 进行修改,因此一些敏感的数据不应该直接存储在隐藏域中。

  2. 隐藏域的名称和值必须和服务器端处理代码中的参数名称和参数值一致,否则服务器无法正确解析表单数据。

  3. 隐藏域只保存在客户端的浏览器中,因此无法在多个页面之间共享隐藏域的值。如果需要在多个页面之间共享数据,可以考虑使用 Cookie 或 Session 等方式。

隐藏域(hidden field)是 HTML 表单中的一种元素,它可以用来 存储 表单中 不需要用户输入的数据,而这些数据需要 提交到服务器端 进行处理。

在 web 应用程序中,隐藏域的作用主要有以下几个方面:

  1. 传递信息:隐藏域可以存储一些需要在表单提交时传递的信息,例如会话标识符或用户 ID。

  2. 保持状态:通过在表单中添加隐藏字段,可以在页面刷新或跳转后仍然保存表单的状态。

  3. 防止跨站请求伪造(CSRF)攻击:服务器可以向表单中添加一个随机的令牌值,并在提交表单时验证该值,以确保表单只能由应用程序内部提交,而不是恶意的第三方。

需要注意的是,由于隐藏域中存储的数据可以被用户轻易地查看和修改,因此隐藏域中应该存储不敏感和经过验证的数据。在处理敏感数据时,应该采用其他更安全的方式,例如使用 HTTPS 协议进行加密传输。

HTML中的隐藏域(hidden fields)被用来在 服务器和客户端之间传递数据,但是这些数据不应该被用户看到或修改。它们通常被使用在表单(form)中,因为有时候我们需要在提交表单时传递一些额外的信息,而这些信息不需要被用户直接输入。

比如,当我们需要在表单中提交一个用户ID,而这个ID又需要被服务器处理,但是不应该让用户看到或修改。这时候就可以使用隐藏域来传递这个ID,因为用户看不到这个表单域,也不会意识到这个ID的存在。

另外,隐藏域也可以用来在一个页面上保存一些数据,比如用户首选项或页面状态等。这些数据可以在页面刷新或跳转时保留下来,以便用户下次访问页面时可以继续使用这些数据。

HTML中的隐藏域是一种隐藏在表单中的输入元素,用于在表单提交时传递数据,但这些数据不会显示给用户。它的作用主要有以下几个:

  1. 传递数据:可以将某些数据放到隐藏域中,通过表单提交到后台进行处理。

  2. 保持状态:可以用隐藏域来保存用户在页面上的某个状态。

  3. 防止跨站请求攻击(CSRF):在表单中添加一个随机生成的token值隐藏域,后台会验证该token是否在服务器端生成,从而防止恶意攻击。

  4. 其他:还可以用来存放一些不想让用户看到的信息,如某些算法中间结果等。

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

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

相关文章

机器视觉公司怎么可能养我这闲人,连软件加密狗都用不起,项目都用盗版,为什么​?

正版价值观我是认同的&#xff0c;但是同行也不用软件加密狗&#xff0c;你让我承担过多的设备成本&#xff0c;终端客户不愿意承担加密狗的成本&#xff0c;公司更不愿意去承担&#xff0c;许多机器视觉公司“零元购”&#xff0c;机器视觉软件加密狗都用不起&#xff0c;项目…

48v变12v同步转换芯片

48v变12v同步转换芯片 以下是一篇关于48V变12V同步转换器WD5105ic的文章正文&#xff1a;48V变12V同步转换器WD5105ic是一种电源管理芯片&#xff0c;它可以将48V的直流电压转换为12V的直流电压。这款芯片具有广泛的应用范围&#xff0c;包括车载充电器件、电动车仪表器件、电…

基于SSM的智慧养老平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

郑州大学2020级信息安全专业——保研小结

最终上岸 夏令营&#xff1a; 夏令营开始的时间一般比较早&#xff0c;在期末考试之前就已经开始了&#xff0c;需要提前联系导师&#xff0c;有的学校是弱com&#xff0c;导师愿意要你入营的概率和优营的概率就会比较大&#xff0c;因此要提前联系导师&#xff0c;复习好项目…

51单片机应用从零开始(五)·加减乘除运算

51单片机应用从零开始&#xff08;一&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;二&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;三&#xff09;-CSDN博客 51单片机应用从零开始&#xff08;四&#xff09;-CSDN博客 详解 KEIL C51 软件的使用建立工程…

conan 入门指南

conan 新手入门 1 需要注意的事项2 使用 Poco 库的 MD5 哈希计算器2.1 创建源文件2.2 搜索poco conan 库2.3 获取poco/1.9.4的元数据2.4 创建conanfile.txt2.5 安装依赖2.6 创建编译文件2.7 构建和运行程序 3 安装依赖程序4 检查依赖关系5 搜索软件包6 与其他配置一起构建 该篇…

Resolume Arena 7.15.0(VJ音视频软件)

Resolume Arena 7是一款专业的实时视觉效果软件&#xff0c;用于创造引人入胜的视频演出和灯光秀。它提供了丰富多样的功能和工具&#xff0c;可以将音频、视频和图像合成在一起&#xff0c;创造出令人惊叹的视觉效果。 Resolume Arena 7支持多种媒体格式&#xff0c;包括视频文…

LeetCode(25)验证回文串【双指针】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 验证回文串 1.题目 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&…

微机原理_10

一、单项选择题(本大题共15小题,每小题3分,共45分。在每小题给出的四个备选项中,选出一个正确的答案。&#xff09; 1,将二进制数110110.01转换为十六进制为(&#xff09; A. 66.1H B. 36.4H C. 66.4 D. 36.2 2,一台计算机的字长是4个字节,含义是(&#xff09; A.能处理的最大…

<MySQL> 什么是数据库索引?数据库索引的底层结构是什么?

目录 一、什么是数据库索引? 1.1 索引的概念 1.2 索引的特点 1.3 索引的适用场景 1.4 索引的使用 1.4.1 创建索引 1.4.2 查看索引 1.4.3 删除索引 二、数据库索引的底层结构是什么&#xff1f; 2.1 数据库中的 B树 长啥样&#xff1f; 2.2 B树为什么适合做数据库索…

【漏洞复现】OneThink前台注入漏洞

漏洞描述 OneThink 是一个基于 PHP 的开源内容管理框架&#xff0c;旨在简化和加速Web应用程序的开发过程。它提供了一系列通用的模块和功能&#xff0c;使开发者能够更轻松地构建具有灵活性和可扩展性的内容管理系统&#xff08;CMS&#xff09;和其他Web应用。 免责声明 …

Meta降本增效大招之:弃用产品

今晚无意间进入去哪儿技术沙龙的直播间&#xff0c;听到他们要删除50%的代码和停掉50%的服务。我就想起Meta公司最近写的这篇博客&#xff1a;Automating product deprecation。 这篇博客对于效能平台的建设非常具有指导意义。文章最后有原文链接和我个人的总结。 这是一个系列…

扩散模型实战(九):使用CLIP模型引导和控制扩散模型

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xff…

接口自动化测试面试题

前言 前面总结了一篇关于接口测试的常规面试题&#xff0c;现在接口自动化测试用的比较多&#xff0c;也是被很多公司看好。那么想做接口自动化测试需要具备哪些能力呢&#xff1f; 也就是面试的过程中&#xff0c;面试官会考哪些问题&#xff0c;知道你是不是真的做过接口自动…

京东数据挖掘(京东运营数据分析):2023年宠物行业数据分析报告

随着社会经济的发展&#xff0c;人均收入水平逐渐提高&#xff0c;使得宠物成为越来越多家庭的成员&#xff0c;宠物数量不断增长。伴随养宠人群的增多&#xff0c;宠物相关产业的发展也不断升温&#xff0c;宠物经济规模持续增长。 根据鲸参谋平台的数据显示&#xff0c;在宠物…

传统游戏难产 育碧瞄向Web3

出品过《刺客信条》的游戏大厂育碧&#xff08;Ubisoft&#xff09;又在Web3游戏领域有了新动作。 首次试水NFT无功而返后&#xff0c;育碧&#xff08;Ubisoft&#xff09;战略创新实验室与Web3游戏网络Immutable达成合作&#xff0c;将利用Immutable 开发游戏的经验和及生态…

C++ 基础二

文章目录 四、流程控制语句4.1 选择结构4.1.1 if语句 4.1.2 三目运算符4.1.3 switch语句注意事项 4.1.4 if和switch的区别【CHAT】4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句 4.2.3 for循环语句九九乘法表 4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 …

python趣味编程-5分钟实现一个测验应用程序(含源码、步骤讲解)

Python测验是用 Python 编程语言编写的,这个关于 Python 编程的简单测验是一个简单的项目,用于测试一个人在给定主题考试中的知识能力。 Python 中的 Quiz项目仅包含用户端。用户必须先登录或注册才能开始Python 测验。 此外,还规定了解决问题的时间。用户应在时间结束前解…

计算机网络:网络层ARP协议

在实现IP通信时使用了两个地址&#xff1a;IP地址&#xff08;网络层地址&#xff09;和MAC地址&#xff08;数据链路层地址&#xff09; 问题&#xff1a;已知一个机器&#xff08;主机或路由器&#xff09;的IP地址&#xff0c;如何找到相应的MAC地址&#xff1f; 为了解决…

力扣刷题篇之数与位3

系列文章目录 目录 系列文章目录 前言 数学问题 总结 前言 本系列是个人力扣刷题汇总&#xff0c;本文是数与位。刷题顺序按照[力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 - 力扣&#xff08;LeetCode&#xff09; 数学问题 204. 计数质数 - 力扣&#xff08;Le…