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

ID为two的文本框无法显示var c值,显示undefined,求技术支援

解决文本框显示undefined的质数判断问题

问题根源

  1. 循环未执行导致变量未赋值:当输入数字为2时,循环条件i <= num - 1等价于i <= 1,循环直接跳过,c从未被赋值,最终显示undefined。
  2. 结果赋值时机错误:你把c的赋值放在循环内部,此时循环还未完成,flag的状态并未确定最终结果,而且重复赋值完全冗余。
  3. 缺少边界值处理:未覆盖输入数字小于2的场景(比如1、0、负数),这类数字本身就不是质数。

修正后的代码

质数判断函数

function prime_number() {
    var num, i, c, flag = true;
    num = parseInt(document.getElementById("one").value);
    
    // 处理小于2的数字,直接判定非质数
    if (num < 2) {
        flag = false;
    } else {
        // 循环优化:只需遍历到num的平方根,提升效率
        for (i = 2; i <= Math.sqrt(num); i++) {
            if (num % i === 0) {
                flag = false;
                break;
            }
        }
    }
    
    // 循环结束后再赋值结果
    c = flag ? "It is a prime number" : "It is not a prime number";
    document.getElementById("two").value = c;
}

表单代码(无需修改)

<form>
    <input type="number" id="one" name="one" placeholder="Enter a positive number"><br>
    <input type="text" id="two" name="two"><br>
    <input type="button" id="submit" name="submit" value="CHECK" onclick="prime_number()"><br>
</form>

关键改动说明

  • 把结果赋值逻辑移到循环结束后,确保使用flag的最终状态生成结果。
  • 增加对num < 2的判断,覆盖所有非质数的边界场景。
  • 优化循环条件为i <= Math.sqrt(num),减少不必要的循环次数(原逻辑也能运行,但效率更低)。

内容的提问来源于stack exchange,提问作者Anurodh Kumar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:15:40