-2

以下のコードを使用すると、画面に何も出力されません。

グローバル配列が呼び出されtasks[]、これが実行しようとしている関数です。

function addTask() {
'use strict';

var task = document.getElementById('task');
var outputTask = document.getElementById('taskOutput');
var outputList = document.getElementById('outputList');

var taskMessage = '';

if (task.value) {
    tasks[tasks.length] = task;
    taskMessage = 'You have ' + tasks.length + ' task(s) in your to-do list.';

    if(output.textContent !== undefined) {
        outputTask.textContent = taskMessage;   
    } else {
        outputTask.innerText = taskMessage;
    }


    for (var i = 0, count = tasks.length; i <= count; i++) {
        var listItem = document.createElement('h3');
        var textNode = document.createTextNode(tasks[i]);
        listItem.appendChild(textNode);
        outputList.appendChild(listItem);
    }

}// End task.value IF.
return false;
}// end addTask() function

JavaScript がアクセスしている HTML は次のとおりです。タスク入力フィールドに値を入力して送信を押すと、outputList div 内の画面への出力が H3 として期待されます。

    <form id="theForm" name="theForm" />
<fieldset>
<legend>Enter the starting and ending dates of the task</legend>
<label for="start">Start</label>
<input type="text" name="start" id="start" placeholder="MM/DD/YYYY or Today" required />

<label for="end">End</label>
<input type="text" name="end" id="end" placeholder="MM/DD/YYYY" required />
</fieldset>
<fieldset><legend>Enter a Task For This Time Period</legend>
<div>
<label for="task">Task</label>
<input type="text" name="task" id="task" required />
</div>
</fieldset>
<input type="submit" value="Add It!" id="submit" />
</form>
</div>

<div id="output"></div>
<div id="taskOutput"></div>
<div id="outputList"></div>
4

1 に答える 1

1

これは、配列の最後の項目を超えてループしているためです。

これを変える:

for (var i = 0, count = tasks.length; i <= count; i++) {

に:

for (var i = 0, count = tasks.length; i < count; i++) {
于 2012-10-18T22:53:47.690 に答える