所以我试图从我创建的数组中显示和随机字符串。我的消息的计数部分工作,它应该显示的第二部分和我的数组中的随机任务显示错误。我没有正确使用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;
答案 0 :(得分:0)
下面:
tasks[tasks.length] = task;
您正在添加对数组输入的引用。因此,每次运行时,都会添加对同一输入的另一个引用。也许你的意思是:
tasks[tasks.length] = task.value;
所以任务是一个任务名称数组。其余的应该没问题,但我会使用:
tasks.push(task.value);
和
if (typeof output.textContent == 'string') {
output.textContent = message;
} else {
output.innerText = message;
}