Buenos días a todos, actualmente estoy enfrentando algunos problemas con mi siguiente código. Básicamente, quiero mantener mi casilla de verificación marcada usando el valor del par de valores clave que almacené en localStorage, por lo que, al volver a cargar, la casilla de verificación debe estar marcada (aquellos con el par de valores clave). Sin embargo, seguí recibiendo este error. Intenté usar window.onLoad pero no funcionó; alguna otra solución para esto ..? Por favor, hágame saber si hay algún problema con mi código también. Gracias
Error
Cannot set properties of null (setting 'checked')Código HTML:
<div style="color: #005e95"> <input type="checkbox" id="checkboxFullDownload" data-dojo-attach-event="onClick: _test" style="cursor: pointer;" > Full Download </div>Código JS:
_test: function() { let checkBox = document.getElementById("checkboxFullDownload"); if (checkBox.checked) { console.log("Checked"); localStorage.setItem(`${xmlTitle} ID:${this.item._id}`, "AllowFullDownload"); checkBox.checked = true; } if (!checkBox.checked) { console.log("Unchecked"); localStorage.removeItem(`${xmlTitle} ID:${this.item._id}`); checkBox.checked = false; } } if (localStorage.getItem(`${xmlTitle} ID:${_test.item._id}`) === "AllowFullDownload") { checkBox.checked = true; console.log("set to true"); }La palabra clave let es el alcance del bloque una vez declarada en el alcance no se puede acceder fuera de ese alcance.
En su caso, la palabra clave let está en el alcance de _test: function(){} . Al moverlo afuera hará el trabajo.
let checkBox = document.getElementById("checkboxFullDownload"); _test: function() { if (checkBox.checked) { console.log("Checked"); localStorage.setItem(`${xmlTitle} ID:${this.item._id}`, "AllowFullDownload"); checkBox.checked = true; } if (!checkBox.checked) { console.log("Unchecked"); localStorage.removeItem(`${xmlTitle} ID:${this.item._id}`); checkBox.checked = false; } } if (localStorage.getItem(`${xmlTitle} ID:${_test.item._id}`) === "AllowFullDownload") { checkBox.checked = true; console.log("set to true"); }