Javascript 通过Jquery记住颜色选择(localStorage)
我已经创建了一个非常简单和基本的Jquery脚本,它更改了我站点上文本框的类,以便在单击按钮时它们具有不同颜色的背景。然后我尝试(借助jqueryfordummies书籍)设置它,以便在本地记住颜色选择 然而,我必须是一个比预期更大的“虚拟人”,因为我无法实现这一点。当我将脚本上载到服务器并在网站上测试它时,我可以更改颜色,但如果我关闭“然后”窗口,然后再次访问我的网站,颜色将恢复为默认颜色。它不会被记住/存储 问题是否可能源于我的文本框使用类“行”来设置背景色,并且您不能将类更改为其他类,但必须使用适当的元素或ID?或者脚本部分的顺序是否应该有所不同? 在我的学习过程中,任何和所有的见解都是值得赞赏的 外部脚本Javascript 通过Jquery记住颜色选择(localStorage),javascript,jquery,Javascript,Jquery,我已经创建了一个非常简单和基本的Jquery脚本,它更改了我站点上文本框的类,以便在单击按钮时它们具有不同颜色的背景。然后我尝试(借助jqueryfordummies书籍)设置它,以便在本地记住颜色选择 然而,我必须是一个比预期更大的“虚拟人”,因为我无法实现这一点。当我将脚本上载到服务器并在网站上测试它时,我可以更改颜色,但如果我关闭“然后”窗口,然后再次访问我的网站,颜色将恢复为默认颜色。它不会被记住/存储 问题是否可能源于我的文本框使用类“行”来设置背景色,并且您不能将类更改为其他类,但必
$(document).ready(function(){
if (localStorage.getItem("farvevalg")=="farve") { $(".row").addClass("farve");
}
if ($(".row").hasClass("farve")) {
localStorage.setItem("farvevalg", "farve");
} else {localStorage.removeItem("farvevalg")}
$('#farvevalg').click(function(){
$(".row").toggleClass('farve');
}); }
我的HTML
/*The default color of all textboxes on a page*/
.row {background-color: #e7e7e7;}
/*The color that it changes into when button is clicked*/
.farve {background-color: pink;}
/*The button that must be clicked to change color*/
#farvevalg {
margin-top: 6%;
padding: 5px;
}
登录中的一些更改未经测试,但应该可以正常工作
$(document).ready(function(){
if (localStorage.getItem("farvevalg")=="farve") {
$(".row").addClass("farve");
}
$('#farvevalg').click(function(){
//only here we add/remove setting
var wasFarveColor = $(".row").hasClass("farve")
$(".row").toggleClass('farve');
if(wasFarveColor)
localStorage.removeItem("farvevalg")
else
localStorage.setItem("farvevalg", "farve")
});
})
您要做的是,在应用程序开始时,检查是否存在值为“farve”的已保存项“farvevalg”。如果是这种情况,则将类“farve”添加到类为“row”的所有元素中。
在此之后,您将检查是否存在类为“farve”的行元素,如果是这种情况,则在存储器中设置该项,否则将删除该项。正如您所看到的,这段代码在这里是没有意义的,因为它不会产生任何影响。您应该将此if/else块移到click回调中(在
$(“.row”)之后。toggleClass('farve');
)您的尝试是正确的,但添加/删除本地存储的位置不正确。你应该在那个按钮里点击
由于CORS问题,代码段无法工作。它仅用于代码查看。
$(文档).ready(函数(){
if(localStorage.getItem(“farvevalg”)=“farve”){
$(“.row”).addClass(“farve”);
}
$('#farvevalg')。单击(函数(){
$(“.row”).toggleClass('farve');
if($(“.row”).hasClass(“farve”)){
setItem(“farvevalg”、“farve”);
}否则{
localStorage.removietem(“farvevalg”)
}
});
});代码>
/*页面上所有文本框的默认颜色*/
.行{背景色:#e7e7e7;}
/*单击按钮时所更改的颜色*/
.farve{背景色:粉红色;}
/*必须单击才能更改颜色的按钮*/
#法维瓦格{
利润率最高:6%;
填充物:5px;
}
试验
改变
“farge”和“fargevalg”不是英语。总是用英语编码。当在问题中包含代码时,请确保它是英文的。哦,谢谢你指出这一点。这是一个一般的“最佳实践”规则,还是一个关于我错过的StackOverflow问题的规则?我总是用我自己的语言来命名特定的类名,但我和我的业余编码伙伴们都说相同的母语,所以我们从来没有讨论过是否应该用英语来命名类名和ID。这是一般编程和StackOverflow的最佳实践。在编写代码时,其他人可能需要协作并维护您编写的代码,即使是不会说英语的人。当询问有关StackOverflow的问题时,如果代码是用英语编写的,人们会更容易理解代码。