2016-07-22 10 views
0

Das Array wird angezeigt, wenn ich console.log es, aber wenn ich etwas anderes (Warnung mit Array und Schlüssel oder nur anhängen) nur undefiniert zeigt. In diesem Fall eigentlich das, was auf meinem Bildschirm auftaucht ist: Checkbox undefined TasteDie Werte in meinem Array werden nicht im DOM gerendert

<body> 
<input id="text-field-input" type="text" placeholder="what do you have to do?"/> 
<button id="submit">submit</button> 
<ul id="list-section"> 
</ul> 

var toDoList = []; 

function addInputToList(todoinput, checkchecked) { 
    toDoList.push({todo : todoinput, checked : checkchecked}); 
}; 

function renderToDos() { 
    $('#list-section').append('<input type="checkbox">' + toDoList.todo + ' ' + '<button>x</button>'); 
}; 

$('#submit').on('click', function() { 
    var textFieldInput = $('#text-field-input').val().toLowerCase(); 

    addInputToList(textFieldInput, false); 
    renderToDos(); 
}); 

Antwort

1

In Ihrem Code versuchen Sie den Zugriff auf eine Objekteigenschaft auf Array, die nicht über solche Eigenschaften (d. H. Todo) verfügt. Deshalb wirst du undefiniert.

Vielleicht möchten Sie dies erreichen -

var toDoList = []; 
 

 
function addInputToList(todoinput, checkchecked) { 
 
    toDoList.push({todo : todoinput, checked : checkchecked}); 
 
}; 
 

 
function renderToDos() { 
 
    var count = toDoList.length; 
 
    if(count > 0){ 
 
    var addedTodo = toDoList[count-1] 
 
     $('#list-section').append('<input type="checkbox">' + addedTodo.todo + ' ' + '<button>x</button>'); 
 
    } 
 
    
 
}; 
 

 
$('#submit').on('click', function() { 
 
    var textFieldInput = $('#text-field-input').val().toLowerCase(); 
 

 
    addInputToList(textFieldInput, false); 
 
    renderToDos(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<body> 
 
<input id="text-field-input" type="text" placeholder="what do you have to do?"/> 
 
<button id="submit">submit</button> 
 
<ul id="list-section"> 
 
</ul>

2

Ihre toDoList ist ein Array, müssen Sie durch die Elemente, um Schleife Ihre zu machen do-Liste:

function renderToDos() { 
    for(var i = 0; i < toDoList.length; i++) { 
     $('#list-section').append('<input type="checkbox">' + toDoList[i].todo + ' ' + '<button>x</button>'); 
    } 
}; 

ich hoffe, dies wird Ihnen helfen.

Verwandte Themen