JavaScript变量合并方法及PDF表单脚本校验优化问询
1. 在JavaScript中合并两个变量的方法与场景
嘿,在JS里合并变量得看你要合并的变量类型,不同类型有不同的玩法,我给你分场景说明:
- 字符串/数字类合并:最常用的是
+运算符,比如字符串拼接或者数字相加:
注意数字和字符串相加时,数字会自动转成字符串哦。let userName = "Dennis"; let userID = 12345; // 用+拼接 let combinedStr = userName + " - " + userID; // 更优雅的模板字符串写法 let combinedStrTemplate = `${userName} - ${userID}`; - 对象合并:推荐用ES6的展开运算符
...,简洁直观,要是有重复属性,后面的对象会覆盖前面的:
也可以用let obj1 = { managerName: "Alice" }; let obj2 = { managerEE: 67890 }; let mergedObj = {...obj1, ...obj2};Object.assign()方法,效果一样:let mergedObj = Object.assign({}, obj1, obj2); - 数组合并:同样可以用展开运算符,或者
concat()方法:let arr1 = ["Manager Name", "Manager EE#"]; let arr2 = ["Checklist Item 1", "Checklist Item 2"]; // 展开运算符写法 let mergedArr = [...arr1, ...arr2]; // concat写法 let mergedArrConcat = arr1.concat(arr2); - 布尔值/逻辑类合并:如果是要合并逻辑判断结果,直接用逻辑运算符
&&(且)、||(或)就行,比如let canSendEmail = isFieldsComplete && isFormValid;
2. 修复PDF表单校验代码,阻止未完成时发送邮件
看了你的代码,问题很清楚:你只是在必填字段未填完时弹出了警告,但没有终止后续的邮件发送流程——警告弹完后,代码还是会继续往下执行mailDoc方法!
咱们只需要把邮件构建和发送的逻辑放到校验通过的分支里就行,也就是if (emptyFields.length > 0)的else块中。修改后的代码如下:
var emptyFields = []; for (var i = 0; i < this.numFields; i++) { var f = this.getField(this.getNthFieldName(i)); if (f.type != "button" && f.required) { // 检查文本框为空、复选框未勾选的必填字段 if ((f.type == "text" && f.value == "") || (f.type == "checkbox" && f.value == "Off")) { emptyFields.push(f.name); } } } if (emptyFields.length > 0) { // 必填字段未填完,弹出警告,不执行后续逻辑 app.alert("Error! This checklist is incomplete:\n" + emptyFields.join("\n")); } else { // 所有必填字段都已填写,才执行邮件构建和发送 var subj_text = getField("Weekly Management Critical Items:").valueAsString; subj_text += ": " + getField("Manager Name").value; subj_text += "- " + getField("Manager EE#").valueAsString; mailDoc({ cTo: "dennis.aikens@fedex.com", cSubject: subj_text, cMsg: "Hey Dennis, here's my checklist for this week. \r" + "Let me know if you have any questions. Thank you." }); }
关键调整说明:
- 把原来在警告代码后的邮件逻辑,全部移入
else块,这样只有当emptyFields为空(所有必填字段都合规)时,才会触发邮件发送 - 给判断条件的代码块加上了大括号,让结构更清晰,避免后续维护时出现逻辑嵌套问题
内容的提问来源于stack exchange,提问作者Dennis Aikens
相关产品推荐
相关产品推荐

