CSS 中的rese.css和normalize.css的区别

本文探讨了两种解决浏览器默认样式差异的方法:CSS重置和Normalize.css。CSS重置通过覆盖所有浏览器样式实现统一,而Normalize.css保留有用的默认样式,修复浏览器bug并确保跨浏览器一致性。Normalize.css还提供了详细的注释和文档,优化了CSS的可用性。

Reset
重置浏览器的 css 默认属性 ,浏览器的品种不同,样式不同,然后重置,让他们统 一。(暴力的,强制的)。
Normalize
Normalize.css 是 css reset 的替代方案,保护有用的浏览器默认样式而不是完全去 掉它们(温和的,根据浏览器特性的)
一般化的样式:为大部分 HTML 元素提供
修复浏览器自身的 bug 并保证各浏览器的一致性
优化 CSS 可用性:用一些小技巧
解释代码:用注释和详细的文档来。

<think>好的,我需要理解用户提供的代码中关于通过axios获取数据并填充表单的部分。首先,用户提到的代码片段涉及使用axios库从后端API获取特定inventory_records_id对应的数据,并将返回的数据填充到HTML表单字段中。我需要结合之前的代码分析,特别是关于数据回填的部分,来解释这一过程是如何实现的。首先,查看代码中的JavaScript部分,特别是处理表单初始化的函数。用户提到当存在inventory_records_id时,代码会发送GET请求到/api/inventory_records/get_obj接口,获取对应的数据。这部分可能使用了axios的get方法,参数中包含inventory_records_id。接下来,数据获取成功后,如何将返回的数据填充到表单字段中?代码中可能遍历了返回的数据对象,并将每个字段的值赋给对应的表单元素。例如,使用document.getElementById或jQuery选择器来找到特定的输入框,并设置其value属性。同时,对于下拉菜单(如employee_users),可能需要动态设置选中的option。此外,权限控制部分也很重要。代码中可能根据用户的权限(如管理员或普通员工)来决定哪些字段可以编辑。例如,某些字段在编辑模式下可能被禁用,或者在查看详情时不可修改。这部分逻辑可能通过检查sessionStorage中的用户组信息来实现。 在处理日期字段时,如inventory_date,代码可能使用了LayUI的日期选择器组件,将返回的日期字符串格式化为特定的显示格式。例如,后端返回的日期可能是ISO格式,前端需要转换为yyyy-MM-dd格式显示在输入框中。另外,需要注意错误处理。例如,如果axios请求失败,是否有相应的错误提示?代码中是否有try-catch块或.catch()方法来处理异常情况,防止页面崩溃?最后,用户可能希望了解整个流程的步骤,从发送请求到数据填充的每个环节,以及涉及的权限控制数据格式化处理。需要将这些步骤分解并逐一解释,确保用户能够理解代码的逻辑实现细节。</think>### 代码功能解析:通过axios获取数据并填充表单 --- #### **1. 数据获取流程** ```javascript if (inventory_records_id !== '') { async function axios_get_3() { const {data: rese} = await axios.get(BaseUrl + '/api/inventory_records/get_obj', { params: {inventory_records_id: inventory_records_id}, headers: {'x-auth-token': token} }); const data = rese.result.obj; // 数据填充逻辑 } axios_get_3(); } ``` - **步骤解析**: 1. **参数检查**:通过`location.search`获取URL中的`inventory_records_id`参数 2. **发送请求**:使用`axios.get`请求后端接口`/api/inventory_records/get_obj`,传递`inventory_records_id`作为查询参数[^3] 3. **认证处理**:请求头包含`x-auth-token`用于身份验证 4. **数据解析**:从响应结果`rese.result.obj`中提取目标数据 --- #### **2. 数据填充逻辑** ```javascript Object.keys(form_data2).forEach((key) => { form_data2[key] = data[key]; $("#"+key).val(form_data2[key]); }); ``` - **字段映射**: - 遍历预定义的`form_data2`对象,将后端返回的`data`字段值逐一赋值到表单输入框 - 使用`$("#"+key).val()`动态设置输入框的值,例如: ```javascript $("#warehouse_name").val(data.warehouse_name); // 填充仓库名称 $("#inventory_date").val(data.inventory_date); // 填充日期 ``` --- #### **3. 特殊字段处理** ##### **下拉菜单动态选中** ```javascript // 处理员工选择下拉框 for (let key in data) { if (key === 'employee_users') { const options = document.querySelector('#employee_users').options; for (let i = 0; i < options.length; i++) { if (options[i].value == data[key]) { options[i].selected = true; // 设置选中项 layui.form.render("select"); // 刷新LayUI下拉样式 } } } } ``` - **实现逻辑**: - 遍历所有`option`元素,匹配后端返回的`employee_users`值 - 通过`selected = true`设置选中状态 - 调用`layui.form.render()`刷新LayUI组件样式[^1] ##### **日期格式化** ```javascript laydate.render({ elem: '#inventory_date', format: 'yyyy-MM-dd', done: (value) => { form_data2.inventory_date = value + ' 00:00:00'; // 时间补全 } }); // 数据回填时格式化日期显示 $("#inventory_date").val(layui.util.toDateString(data.inventory_date, "yyyy-MM-dd")); ``` - **关键点**: - 使用LayUI的`laydate`组件将原始日期格式化为`yyyy-MM-dd`格式显示 - 存储时补充时间部分`00:00:00`以保证后端数据一致性[^1] --- #### **4. 权限控制逻辑** ```javascript if ((form_data2['inventory_records_id'] && $check_field('set', 'warehouse_name')) || (!form_data2['inventory_records_id'] && $check_field('add', 'warehouse_name'))) { // 允许编辑 } else { $("#warehouse_name").attr("disabled", true); // 禁用字段 } ``` - **权限验证**: - 通过`$check_field`函数检查用户对字段的`add/set`权限 - 若无权限则禁用输入框(`disabled = true`)[^3] --- ### 流程图解 ```mermaid graph TD A[检查URL中的inventory_records_id] -->|存在| B[发送GET请求获取数据] B --> C{请求成功?} C -->|是| D[遍历数据并填充表单字段] D --> E[处理特殊字段:下拉菜单/日期] E --> F[应用权限控制] C -->|否| G[显示错误提示] ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值