我希望用户为我们网站上的体验选择一种颜色主题。我创建了不同的主题外部css文件,并创建了一个功能,可以在我创建的所有颜色选项之间成功切换。
唯一的问题是,当我点击网站上另一个页面的链接时,主题会返回到我创建页面的默认颜色。
有没有办法动态更改每个html页面的href属性,以便在每个页面上更改css颜色文件。或者我需要cookie才能记住这个?我还没有了解过cookie,但想知道这是不是一个功能。
下面是我的代码,该代码在该页面上的每种颜色之间发生变化,但仅在该页面上发生变化。
HTML: 橙色主题 紫色主题 红色主题
使用Javascript: function setStyleSheet(url){ var stylesheet = document.getElementById(“stylesheet”); stylesheet.setAttribute('href',url); }
我从外部保存了所需的css文件。我们非常欢迎任何帮助。感谢。
答案 0 :(得分:0)
理想情况下你会使用cookies,但如果你真的 想要在没有cookie的情况下这样做,你可以尝试运行类似的东西:
var links = document.querySelectorAll("a");
for (i = 0; i < links.length; i++) {
var existingHref = links[i].href;
links[i].href += (links[i].href.indexOf("?") + 1 ? "&" : "?") + "theme=" + encodeURIComponent(theme);
}
(未经测试的代码,还有一些您想要检查的其他边缘情况,但一般的想法是存在的)
这将更新页面上的每个链接,向其URL添加theme=[theme]
属性,然后您可以通过解析window.location.search
在以后的页面中加载:
function getTheme() {
if (window.location.search.split("theme=").length < 2) return null;
return window.location.search.split("theme=")[1].split("&")[0];
}
当我说&#34;理想情况下&#34;我的意思是你应该使用cookies - 它们是用来制作的,并且几乎完全用于此目的,你不必处理粗略的边缘情况,就好像已经有theme
一样该网址或者它是否会转到另一个也在网址中使用theme
的域名,如果您使用Javascript更改网页仍会有效,等等 - 但我相信这种方法也应该有用。“ / p>