尝试显示随机任务时出现对象HTMLInputElement错误

object HTMLInputElement error when trying to display random task

本文关键字:对象 HTMLInputElement 错误 显示 随机 任务      更新时间:2023-09-26

所以我试图显示我创建的数组中的随机字符串。我的消息的计数部分有效,第二部分应该显示,数组中的随机任务显示错误。我没有正确使用parseInt和Math.random函数吗?我不需要对这个数字进行四舍五入,因为parseInt将其转换为整数,对吗?

var tasks = []; 
// Function called when the form is submitted.
// Function adds a task to the global array.
function addTask() {
    'use strict';
    // Get the task:
    var task = document.getElementById('task');
    // Reference to where the output goes:
    var output = document.getElementById('output');
    // For the output:
    var message = '';
    if (task.value) {
        // Add the item to the array:
        tasks[tasks.length] = task;
        var randomNum = tasks.length;
        var randomTask = parseInt((Math.random() * randomNum), 10);
        var randomMsg = tasks[randomTask];

        // Update the page:
        message = 'You have ' + tasks.length + ' task(s) in your to-do list.'n';
        message += 'Random Task: ' + randomMsg;
        if (output.textContent !== undefined) {
            output.textContent = message;
        } else {
            output.innerText = message;
        }
    } // End of task.value IF.
    // Return false to prevent submission:
    return false;
} // End of addTask() function.
// Initial setup:
function init() {
    'use strict';
    document.getElementById('theForm').onsubmit = addTask;
} // End of init() function.
window.onload = init;

此处:

        tasks[tasks.length] = task;

您正在向数组的输入添加一个引用。因此,每次运行时,都会向同一输入添加另一个引用。也许你的意思是:

        tasks[tasks.length] = task.value;

所以tasks是一个任务名称数组。剩下的应该没问题,不过我会用

        tasks.push(task.value);

if (typeof output.textContent == 'string') {
  output.textContent = message;
} else {
  output.innerText = message;
}