将css href属性更改为多个html页面on

时间:2016-03-25 00:43:39

标签: javascript html css cookies

我希望用户为我们网站上的体验选择一种颜色主题。我创建了不同的主题外部css文件,并创建了一个功能,可以在我创建的所有颜色选项之间成功切换。

唯一的问题是,当我点击网站上另一个页面的链接时,主题会返回到我创建页面的默认颜色。

有没有办法动态更改每个html页面的href属性,以便在每个页面上更改css颜色文件。或者我需要cookie才能记住这个?我还没有了解过cookie,但想知道这是不是一个功能。

下面是我的代码,该代码在该页面上的每种颜色之间发生变化,但仅在该页面上发生变化。

HTML:                                  橙色主题         紫色主题         红色主题     

使用Javascript:              function setStyleSheet(url){         var stylesheet = document.getElementById(“stylesheet”);             stylesheet.setAttribute('href',url);         }     

我从外部保存了所需的css文件。我们非常欢迎任何帮助。感谢。

1 个答案:

答案 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>