我有一个包含33个文本区域的页面,如果用户填充了其中的任何一个,我想要存储它们,但也要在localStorage的列表/数组中留下空空间,这意味着,如果您使用条目0,而条目33,则中间的31个区域将为空,因为它们的位置很重要。我取得了一些进展,我得到的最好结果就是这个剧本:
var cells = 33;
function savePlanner() {
for (i = 0; i < cells; i++) {
localStorage.setItem('planner', document.getElementsByTagName('textarea')[i]);
}
}
savePlanner
函数在HTML
文件中按钮标记的onclick
上调用。
<div class="content-output"><textarea></textarea></div>
<table class="u-full-width">
<thead>
<tr>
<th>Hour</th>
<th>Activity</th>
<th>Note</th>
</tr>
</thead>
<tbody>
<tr>
<td><textarea id="hour" class="user-input"></textarea></td>
<td><textarea class="user-input"></textarea></td>
<td><textarea class="user-input"></textarea></td>
</tr>
<tr>
<td><textarea id="hour" class="user-input"></textarea></td>
<td><textarea class="user-input"></textarea></td>
<td><textarea class="user-input"></textarea></td>
</tr>
<tr>
<td><textarea id="hour" class="user-input"></textarea></td>
<td><textarea class="user-input"></textarea></td>
<td><textarea class="user-input"></textarea></td>
</tr>
这些textarea
重复了11次,因为其中有3列,我有33条条目。
但是如果我使用document.getElementsByTagName('textarea')[i]
,存储的是HTMLTextAreaElement
,如果我将value
连接到它,它就不会存储任何东西,即使我的一些textareas
被填充了。我在这里错过了什么?
发布于 2018-12-10 02:52:50
localStorage.setItem('planner', document.getElementsByTagName('textarea')[i]);
将HTMLTextAreaElement粘贴到存储中,而localStorge只能存储字符串,HTMLTextAreaElement上的getString方法将返回HTMLTextAreaElement。
你想要的
document.getElementsByTagName('textarea')[i].value
它是文本区域的值,而不是DOM元素。
https://stackoverflow.com/questions/53698633
复制相似问题