如何将这三个变量存储到本地存储中
how do I store these three variables into local storage?
我正在创建一个疯狂的库,但我无法让我的变量存储在本地存储中。 我有三个变量:名词、名词和名称。 我的最终目标是,一旦存储了变量,用户将能够重新加载页面,并且他们生成的最后一个故事将显示在页面顶部。
<script>
function lib() {
var storyDiv = document.getElementById("story");
var nounTwo = document.getElementById("nounTwo").value;
var noun = document.getElementById("noun").value;
var name = document.getElementById("name").value;
storyDiv.innerHTML = "One day a " + noun + " attacked a " + nounTwo + ", and was defeated by " + name + "!";
noun.replace('noun', noun.value);
noun.replace('nounTwo', nounTwo.value);
noun.replace('name', name.value);
}
var libBtn = document.getElementById('generate');
libBtn.addEventListener('click', lib);
localStorage.setItem('noun', noun.value);
console.log(localStorage);
</script>
<html>
<head>
<title>Mad Lib Lab</title>
</head>
<body>
<h1>Mad Libs</h1>
<div id="result"></div>
<div id="story">
One day a
<input type="text" id="noun" placeholder="noun">
attacked a
<input type="text" id="nounTwo" placeholder="noun">
,but was defeated by a
<input type="text" id="name" placeholder="Famous Person">!
<button id="generate">generate</button>
</div>
</body>
</html>
如果只需要显示最后一个故事,则不需要存储所有三个变量。
同样在这里,名词不包含您要搜索的任何字符串(它仅包含您在名词输入中编写的内容):
noun.replace('noun', noun.value);
noun.replace('nounTwo', nounTwo.value);
noun.replace('name', name.value);
这应该可以解决问题:
function lib() {
var storyDiv = document.getElementById("story");
var nounTwo = document.getElementById("nounTwo").value;
var noun = document.getElementById("noun").value;
var name = document.getElementById("name").value;
var story = "One day a " + noun + " attacked a " + nounTwo + ", and was defeated by " + name + "!";
storyDiv.innerHTML = story;
localStorage.setItem('laststory', story);
}
var libBtn = document.getElementById('generate');
libBtn.addEventListener('click', lib);
if(localStorage.getItem('laststory')) {
document.getElementById('result').innerHTML = localStorage.getItem('laststory');
}
http://jsfiddle.net/33z2m6b1/2/
当<input>
中还没有任何东西时,您可以立即调用 setItem。 addEventListener 是非阻塞的,占位符无法通过 el.value
访问。
例如,将其放入函数saveFunc
中,然后从lib
调用它或添加第二个按钮save
,saveFunc
作为侦听器。
所以
<script>
function save() {
var mapping = {'noun': '#noun', 'name': '#name', 'nounTwo': '#nounTwo'};
for (key in mapping) { // ↓ I prefer querySelector, that's why ids with # ↑
localStorage.setItem(key, document.querySelector(mapping[key]).value)
}
console.log(localStorage);
}
function lib() {
var storyDiv = document.getElementById("story");
var nounTwo = document.getElementById("nounTwo").value;
var noun = document.getElementById("noun").value;
var name = document.getElementById("name").value;
storyDiv.innerHTML = "One day a " + noun + " attacked a " + nounTwo + ", and was defeated by " + name + "!";
noun.replace('noun', noun.value);
noun.replace('nounTwo', nounTwo.value);
noun.replace('name', name.value);
save(); // ← here it goes.
}
var libBtn = document.getElementById('generate');
libBtn.addEventListener('click', lib);
</script>
<html>
<head>
<title>Mad Lib Lab</title>
</head>
<body>
<h1>Mad Libs</h1>
<div id="result"></div>
<div id="story">
One day a
<input type="text" id="noun" placeholder="noun">
attacked a
<input type="text" id="nounTwo" placeholder="noun">
,but was defeated by a
<input type="text" id="name" placeholder="Famous Person">!
<button id="generate">generate</button>
</div>
</body>
</html>
相关文章:
- 使用javascript存储变量的最安全方式
- 如何在Javascript中为不同的页面访问存储变量
- Javascript 会话存储变量未正确保存
- 服务中的角度存储变量
- 在文本字段中显示保存的本地存储变量 - javascript
- 带有本地存储变量的 jQuery 循环不起作用
- 单击“在时间存储变量”按钮,以便在触发 ajaxComplete 事件时使用
- 页面刷新后的 Javascript 存储变量
- 如何存储变量中单击的子项
- 如何获取不同选项卡的实例,以便我可以存储变量/执行特定于各个选项卡的操作
- 如何使用 jquery 使用本地存储变量设置输入字段
- 无法检索本地存储变量
- 显示本地存储变量
- HTML5会话存储:变量未存储在<李>onclick属性
- 在HTML或Javascript中,如何为每个人存储变量
- SeleniumIDE替换存储变量中的字符串
- JQuery设置本地存储变量
- 在服务AngularJS中存储变量
- 如何使用存储变量和随机数与硒ide
- 计算器Javascript/Jquery存储变量