替代文件法

Alternative Document Method

总结问题。

  1. 此程序的目标是确定用户整数是偶数还是奇数。
  2. 我相信我的代码可以更简洁。
  3. 存在逻辑错误,指出 HTML 输入元素未定义。

描述您尝试过的方法。

  1. 我将 document.getElementById() 更改为 .querySelector().getElementByClassName

代码-

https://jsfiddle.net/pherami1/jfh3xq69/2/

const input = document.getElementById('textInput');<br>
const button = document.getElementById('submitButton');<br>
    
button.addEventListener('click', evenOrOdd);

function evenOrOdd () {
    let result;
    let even;
    let odd;
    
    if (input % 2) {
        result = even;
    } else {
        result = odd;
    }
    document.getElementById('para').textContent = input + " is an " + result + " number.";
}

您需要更改许多内容 -

第一件事——如果你想得到输入的值,使用.value

其次 - 在 evenOrOdd 函数中声明 input。如果不这样做,则每次单击按钮时输入的值都不会改变。

第三 - .value 的输出是一个字符串,但是要判断一个数是偶数还是奇数,我们需要使用 Number().[=33= 将字符串转换为数字]

第四 - 当您检查一个数字是偶数还是奇数时,您将 result 变量的值更改为 evenoddevenodd 是变量,不是字符串。所以,无论 result 的值是什么,它总是 undefined 因为 evenodd 是未定义的。将 result 的值更改为字符串 "even""odd".

第五 - 当你检查偶数时,你会做 (input % 2)。如果数字是偶数,则 (input % 2) 将计算为 0。 0 表示错误。所以,即使你的数字是偶数,你也会得到“奇数”。将if条件改为(input % 2 == 0)

以下代码段中应用了所有这些更改。检查代码段的代码 -

let button = document.getElementById('submitButton');
button.addEventListener('click', evenOrOdd);

function evenOrOdd () {
    //Declare the input inside the function and use .value to get the value and Number() to convert the string to number.
    let input = Number(document.getElementById('textInput').value);
    let result;
    
    //Change the condition
    if (input % 2 == 0) {
        result = "even";//Change to strings, not variables
    } else {
        result = "odd";
    }
    document.getElementById('para').textContent = input + " is an " + result + "number.";
}
<input type="number" id="textInput" />
<button id="submitButton">Submit</button>
<p id="para"></p>