有一个带有选择器、输入、单选、复选框等的表单。更新时需要保存数据(localstorage帮我)
但我有一个问题,需要对许多复选框、选择器等进行排序,例如,如何将此数据放入一个对象中?创建嵌套对象?
以下是我设法实现的)
let form = document.querySelector('form')
let input = document.querySelector('input')
let textarea = document.querySelector('textarea')
let checkbox = document.querySelector('input[type=checkbox]')
let radiobuttons = document.querySelectorAll('input[type=radio]:checked')
if (localStorage.getItem('param') !== null) {
let param = JSON.parse(localStorage.getItem('param'));
input.value = param.input
textarea.value = param.textarea
checkbox.checked = param.checkbox
}
document.addEventListener('input', function(e) {
localStorage.setItem('param', JSON.stringify({input: input.value, textarea: textarea.value, checkbox: checkbox.checked}))
})
<form action="">
<input type="text"/>
<textarea name="t" id="text"></textarea>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id=""/>
<label class="form-check-label" for=""> Default checkbox </label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" id=""/>
<label class="form-check-label" for=""> Checked checkbox </label>
</div>
<div class="form-check">
<input class="form-check-input" type="radio" name="" id=""/>
<label class="form-check-label" for=""> Default radio </label>
</div>
<div class="form-check">
<input
class="form-check-input"
type="radio"
name=""
id=""
/>
<label class="form-check-label" for=""> Default radio </label>
<div class="form-check">
<input
class="form-check-input"
type="radio"
name=""
id=""
/>
<label class="form-check-label" for=""> Default radio </label>
</div>
<select name="select" id="select">
<option value="name1">name1</option>
<option value="name2">name2</option>
<option value="name3">name3</option>
</select>
</div>
</form>
用您的id标记所有表单元素,并用一些属性标记应该保存的表单元素(在我的示例中是
data-save)该脚本的作用:
选择表单元素 然后在表单内查找具有 属性的所有元素
data-save。更改时,它会遍历所有选定的元素,并将它们的值保存到具有结构的对象中
[id_элемента]: значение_элемента,并将其保存在 localStorage 中。加载页面时,从 localStorage 获取数据并通过其 id 写入所选元素
单选框和复选框类型的输入没有值;它们有一个选中属性。
PS:也许我错过了一些类型或元素,我认为纠正这个脚本以适应它们的功能并不困难