JavaScript检查两个let变量是否为空时邮件误发送问题
问题分析与解决
你的代码逻辑写反了——当前if (!email_subject && !email_body)的判断条件,意思是当主题和内容都为空时,才会触发邮件跳转。这正好和你想要的“空值时不发送”需求相反。
修正方案
1. 核心逻辑调整
根据你的需求,应该把判断条件改成:
- 如果要求主题和内容都必须填写才发送:
if (email_subject && email_body) - 如果允许主题或内容任意一个填写就发送:
if (email_subject || email_body)
2. 优化输入校验(可选)
输入框的value可能包含空白字符(比如空格),建议用trim()去除首尾空白,避免无效输入触发邮件:
document.addEventListener("DOMContentLoaded", function() { document.querySelector("#send_message_button").addEventListener("click", function() { // 去除首尾空白字符 let email_subject = document.querySelector("#subject").value.trim(); let email_body = document.querySelector("#text").value.trim(); let email_to = "example@gmail.com"; // 主题和内容都不为空时才发送 if (email_subject && email_body) { location.href = `mailto:${email_to}?subject=${email_subject}&body=${email_body}`; } }); });
这样修改后,只有当主题和内容(去除空白后)都不为空时,才会打开邮件客户端;如果任意一个为空,就不会触发发送。
内容的提问来源于stack exchange,提问作者Joan Carles Montero Jiménez
相关产品推荐
相关产品推荐

