【问题标题】:Correct statment but incorrect outcome陈述正确但结果不正确
【发布时间】:2021-04-03 13:51:48
【问题描述】:

我试图做一个简单的登录系统(这是本地的)。但是,我一直得到不正确的结果,我很困惑。我 99% 确定我的 if 陈述是正确的,但它一直在提醒“不好”。我真的不知道为什么会这样,因为当我在用户名文本字段中输入“abcd1”时,它仍然会提示“不好”。

HTML:

<!DOCTYPE html>
<meta content="text/html;charset=utf-8" http-equiv="Content-Type">
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>      
 <form id='form'>
    <title>Sign Up #1</title>
    <h3>Simple Signup system</h3>
  <form>
    <div>
      <label>Username:</label>
      <input type="text" name="text1" id = "username">
    </div>
    <div>
      <label>Password:</label>
      <input type="text" name="text2" id = "password">
    <div>
    
 <button type="button" id="subBtn">Sign Up!</button>
  </form>
    
</body>
<script src="main.js"></script>
</html>

JS:

// /home/ceta123/Desktop/ab/Sedmi/index.html

var rUsername = document.getElementById('username').value;

var rPassword = document.getElementById('password').value;

// /main 

window.onload = function() {
    document.getElementById('subBtn').addEventListener('click', onSubmit);
}

function onSubmit() {

    function onSubmit2() {
        if (rUsername.includes(Number))
            console.log('Good');
        else {
            alert('Not good!');
        }
    }
    
        if(rUsername == 'string' || rUsername instanceof String)
        {
            console.log('Is not a string')
        }
        else
        {
            onSubmit2();
        }
        
        document.forms['form'].submit();
    }

【问题讨论】:

  • 这感觉像是一项功课。您希望看到此表达式返回 "User5Name".includes(Number) 的结果是什么?
  • 这不是大声笑,我只是在自学 javascript 并做这样的小项目来改进。另外,使用 .includes 数字,我正在尝试检查用户名 var 是否包含数字,这就是我检查用户是否设置了正确密码的方式。
  • 好吧,试着把这个放到用户名"function Number() { [native code] }"(没有"),你应该不会再看到Not good!的警报了。
  • 在计算中,有一个短语叫做“Garbage-in, Garbage-out” 见en.wikipedia.org/wiki/Garbage_in,_garbage_out

标签: javascript html string numbers character


【解决方案1】:

使用

if (typeof rUsername === 'string' || rUsername instanceof String)

通过警报或控制台技术将您的代码分成几部分以获得更好的结果。

【讨论】:

    【解决方案2】:
    1. 这一行在 JS 中没有多大意义:
    if (rUsername.includes(Number))
    

    如果您要检查用户名是否包含数字,则可以使用正则表达式:

    if(\/d+\.test(rUsername))
    
    1. 检查变量是否为字符串:
    if(typeof rUsername === 'string')
    

    代替:

    if(rUsername == 'string' || rUsername instanceof String)
    
    1. 您需要在提交时获取username 值,而不是在首次加载页面时获取。
      所以你需要在你的onSubmit() 函数中包含这一行:
    var rUsername = document.getElementById('username').value;
    

    【讨论】:

    猜你喜欢
    • 2017-11-28
    • 2021-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多