You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何区分JavaScript Prompt取消操作与0/空输入的不同响应?

区分Prompt取消、空输入与输入0的解决方案

问题核心在于直接用Number()转换prompt返回值会丢失原始信息:点击取消返回的null和空输入的""都会被转成NaN,导致无法区分。要解决这个问题,需要先保留prompt的原始返回值,再分情况处理:

修改后的完整代码

// 先保存prompt的原始输入值,不直接转Number
const rawInput = prompt(
  `Qual a sua operação hoje? 
  1 - Soma (+)
  2 - Subtração (-)
  3 - Multiplicação (*)
  4 - Divisão (/)
  5 - Potenciação (^)
  6 - Raiz (*/)
  7 - Logaritmo natural (log)
  8 - Divisão inteira (resto) 
  `,
  "Digite aqui!"
);

// 1. 点击取消按钮的情况(rawInput为null)
if (rawInput === null) {
  if (confirm("Quer mesmo sair?")) {
    window.close(); // 修正原代码中Window的大小写错误
  } else {
    calculadora();
  }
} else {
  // 转换为数字,方便后续判断
  const operacao = Number(rawInput);
  
  // 2. 输入空值或非数字内容的情况
  if (isNaN(operacao)) {
    alert("Por Favor, digite um número válido!");
    calculadora();
  } 
  // 3. 输入0的情况,触发特定提示
  else if (operacao === 0) {
    alert("Você digitou 0, por favor escolha um número entre 1 e 8!");
    calculadora();
  } 
  // 4. 输入数字不在1-8范围内的情况
  else if (operacao < 1 || operacao > 8) {
    alert("Por favor, escolha um número que retorne uma operação!");
    calculadora();
  } 
  // 5. 输入有效数字(1-8)的情况,可继续后续计算逻辑
  else {
    console.log(`Selecionou a operação ${operacao}`);
    // 此处添加对应操作的计算代码
  }
}

关键修改点说明

  • 保留rawInput原始值,通过rawInput === null精准判断点击取消的操作。
  • 用isNaN(operacao)识别空输入或非数字内容(空字符串转Number会得到NaN)。
  • 单独增加operacao === 0的判断分支,触发输入0的专属提示。
  • 修正原代码中Window.close()的大小写错误(应为小写window)。

内容的提问来源于stack exchange,提问作者Marina de Campos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 05:45:41