I don't understand why you would need the localStorage keys. Doesn't this do it?
Code:
<a href="javascript: void(0)" onclick="document.getElementById('form').style.display='block'; return false">show checked values</a>
<a href="javascript: void(0)" onclick="document.getElementById('form').style.display='none'; return false">hide checked values</a><br><br>
<form id="form" style="display: none">
<div id="selections">
<input type="checkbox" value="1">
<label>First</label>
<br>
<input type="checkbox" value="2">
<label>Second</label>
<br>
<input type="checkbox" value="3">
<label>Third</label>
<br>
<input type="checkbox" value="4">
<label>Forth</label>
<br>
<br>
<div>You Selected: <span id="selectionsResults"></span>
</div>
</div>
</form>
<script>
//Adds to LocalStorage
(function() {
var boxes = document.querySelectorAll("input[type='checkbox']");
for (var i = 0; i < boxes.length; i++) {
var box = boxes[i];
if (box.hasAttribute("value")) {
setupBox(box);
}
}
function setupBox(box) {
var storageId = box.getAttribute("value");
var oldVal = localStorage.getItem(storageId);
console.log(oldVal);
box.checked = oldVal === "true" ? true : false;
box.addEventListener("change", function() {
localStorage.setItem(storageId, this.checked);
});
}
})();
//Checkbox selections
(function(d) {
function nodeFlush(e) {
while (e.firstChild) e.removeChild(e.firstChild);
}
function nodeAdd(e, node) {
e.appendChild(typeof node == 'object' ? node : d.createTextNode(node));
}
function nodeReplace(e, node) {
nodeFlush(e);
nodeAdd(e, node);
}
function eventAdd(e, eventName, handler) {
if (e.addEventListener) e.addEventListener(eventName, handler, false);
else e.attachEvent('on' + eventName, handler);
}
var
target = d.getElementById('selections'),
output = d.getElementById('selectionsResults'),
inputs = target.getElementsByTagName('input');
function checkInputs() {
var result = [];
for (var i = 0; i < inputs.length; i++) {
if (inputs[i].checked) result.push(inputs[i].value);
}
nodeReplace(output, result.length ? result.join(', ') : '0 items selected...');
document.getElementById('selectionsResults').innerHTML = document.getElementById('selectionsResults').textContent;
}
for (var i = 0; i < inputs.length; i++) {
eventAdd(inputs[i], 'change', checkInputs);
eventAdd(inputs[i], 'click', checkInputs);
}
checkInputs();
})(document);
</script>
Bookmarks