2016-07-10 5 views
0

Новое в кодировании, имеющем проблемы с моим JS-кодом. Он работал в течение последних нескольких дней, а затем я не уверен, что произошло, теперь он дал мне ошибку на линии (17) todos.push (задача); Ошибка говорит: «todos.push() не является изюминкой». Любая помощь будет принята с благодарностью.Javascript ToDo list Добавить элемент

function get_todos() 
{ 
var todos = new Array; 
var todos_str = localStorage.getItem('todo'); 
if (todos_str !== null) { 
    todos = JSON.parse(todos_str); 
} 
return todos; 
} 


function add() 
{ 
var task = document.getElementById('task').value; 

var todos = get_todos(); 
todos.push(task); 
localStorage.setItem('todo', JSON.stringify(todos)); 

show(); 

return false; 
} 


function remove() 
{ 
var id = this.getAttribute('id'); 
var todos = get_todos(); 
todos.splice(id, 1); 
localStorage.setItem('todo', JSON.stringify(todos)); 

show(); 

return false; 
} 

function show() 
{ 
var todos = get_todos(); 

var html = '<table>'; 
for(var i=0; i<todos.length; i++) 
{ 
html += '<br><tr><strong>'+ 
'<input type="image" src="/Pictures/remove.png" class="remove" id="' + i + 
'"></input>' + todos[i] + '</strong><input type="checkbox" name="cBox" store="checkbox1" id="isDone"><label for="cBox"</label></tr><br>'; 
}; 
html += '</table>'; 


document.getElementById('todos').innerHTML = html; 

var buttons = document.getElementsByClassName('remove'); 
for (var i=0; i < buttons.length; i++) 
{ 
    buttons[i].addEventListener('click', remove); 
}; 
} 

document.getElementById('add').addEventListener('click', add); 
show(); 

Мой HTML

<!DOCTYPE html> 
    <html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> 
    </head> 
    <body> 
    <img id="mainImg" src="\Pictures\mytodolist.jpg" 
    <form> 
    <div> 
    <img id="taskImg" src="\Pictures\tasks.jpg" 
    <br> 
    <br> 
    <input id="add" type="image" width='150' heigth='80' src="\Pictures\addButton.png" ></input> 
    <br> 
    <input id="task"> 
    </div> 
    <div id="todos"></div> 

    <script src= "ToDo.js"></script> 
    <link rel= "stylesheet" type= "text/css" href="todoStyle.css"/> 
    </body> 
    </html> 
+0

В 'get_todos()' , вы возвращаете объект JSON ('todos = JSON.parse (todos_str);'), а 'push' - это метод' prototype.Array' –

+0

Попробуйте использовать 'console.log (todos);' после строки 16 'var todos = get_todos();' чтобы увидеть, что ваша функция return, также вы должны, вероятно, перенести функции 'localStorage' в' try catch', у всех браузеров это нет, и настройки конфиденциальности отключают его в некоторых случаях, поэтому вы можете получить неопределенный результат и отличаться от нуля, следовательно, почему ваш код сбой – javiercf

+0

спасибо за консультацию, только что начал работать снова, ничего не изменил. – Kris

ответ

0

Кажется, работает нормально здесь: http://codepen.io/ilanus/pen/xOXJXW вы объявляете Array в вашей get_todos() функции вернуть его, а затем добавить в нее элементы todos.push(task);

+0

да, она работала всего несколько минут, прежде чем я опубликовал ее, она просто перестала работать, даже если я не внесла никаких изменений .. не уверен, что проблема в – Kris

Смежные вопросы