Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Проблемы с WebStorage (https://javascript.ru/forum/events/70547-problemy-s-webstorage.html)

Aleksandr Chirkov 14.09.2017 12:37

Проблемы с WebStorage
 
Доброго дня всем, уважаемые Гуру! Подскажите советом. Начал делать себе планировщик задач. Хочу чтобы задачи сохранялись у меня на web странице. Изучаю функцию WebStorage и она у меня странно не отрабатывает, хотя ошибки вроде как быть не должно.

<div>
		<p>Добавь новую задачу!</p>
		<form>
		<input type="text" size="20" id="quiz2">
		<input type="button" id="newTask" size="40" placeholder="Новая задача" value="Добавить задачу">
		</form>
</div>


window.onload = init;

function init() {
var act2 = document.getElementById("newTask").onclick = addNewTask;

//alert("step1");
loadMyTasks();

digitalWatch();
}
	
function addNewTask() {
	var task1 = document.getElementById("quiz2");
	task = task1.value ;
		if (task == ""){
			alert("Сань, ну ты че кнопки то тычешь просто так? ;) ");
		} else {
			alert("Саня новая задача!: " + task);
		}
	var li = document.createElement("li");
	li.innerHTML = task;
	var ol = document.getElementById("taskList");
	ol.appendChild(li); 
	save(task);
}

function save(part){
	alert("Сохраняю!");
	var taskListArray = getStoreArray("taskList");
	taskListArray.push(part); //Я точно знаю что, вот тут не пашет почему то, но почему?!
	localStorage.setItem("taskList", JSON.stringify(taskListArray));
	alert("Готово");
}

function loadMyTasks(){
	var taskListArray = getTasksArray(); 
	var ol = document.getElementById("taskList");
		if(taskListArray != null) {
			for (var i = 0; i < taskListArray.length; i++){
				var li = document.createElement("li");
				li.innerHTML = taskListArray[i];
				ol.appendChild(li);
			}
		}
}

function getTasksArray(){
	return getStoreArray("taskList");
}

function getStoreArray(key){
	var taskListArray = localStorage.getItem(key);
	if (taskListArray == "" || taskListArray == null){
		taskListArray = new Array();
		alert("создали");
	} else {
		taskListArray = JSON.parse(taskListArray); 
	}
	return taskListArray;
}


Подскажите почему функция не идёт дальше taskListArray.push(part); ??

Nexus 14.09.2017 13:00

Aleksandr Chirkov, много лишнего кода, по-моему.
Перед строкой 30 добавь эту строку и смотри что в консоль запишется:
return console.log(taskListArray);

Если запишется не массив, то у этого объекта метода push не будет.

Rise 14.09.2017 13:35

Aleksandr Chirkov,
нет такой функции digitalWatch

Aleksandr Chirkov 14.09.2017 16:10

Действительно нет такой функции, лишний код.
Но смысл в том, что в консоли, я действительно увидел, что создавался не массив, поэтому push не отрабатывала, очистил Историю и кэш и все заработало как надо. СПАСИБО!:dance:
А можно в таком случае ещё вопрос, допустим у меня есть сайт и я его выложил на хостинг, но обновляю в процессе работы, как мне сделать так, что б у пользователей он не сохранялся в кэш и при смене CSS или HTML, пользователь видел новый вариант сайта?

Rise 14.09.2017 16:37

Цитата:

Сообщение от Aleksandr Chirkov
как мне сделать так, что б у пользователей он не сохранялся в кэш и при смене CSS или HTML, пользователь видел новый вариант сайта?

почитай, только обычно номер версии не в имени пишут как там показано style.x234dff.css, а в конце имени после знака вопроса style.css?x234dff, ну а без всего этого новый вариант сайта в своем браузере можно получить так Ctrl+F5.

Nexus 14.09.2017 16:42

Aleksandr Chirkov, html всегда загружается с сервера, а чтобы css всегда "свежий" загружался в конец пути подключаемого файла добавь строку «?123», где "123" - метка времени последней модификации этого файла.
<!-- Example: -->
<link rel="stylesheet" href="/path/to/file.css?123123">


Часовой пояс GMT +3, время: 04:07.