javascript - 将 css href 属性更改为多个 html 页面 onclick

标签 javascript html css cookies

我想让用户根据他们在我网站上的体验选择颜色主题。我创建了不同主题的外部 css 文件,并创建了一个函数来成功地在我创建的所有颜色选项之间切换。

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

有没有办法动态更改每个 html 页面的 href 属性,以便在每个页面上更改 css 颜色文件。或者我需要cookie来记住这一点吗?我还没有了解 cookie,但想知道这是否可以是一个函数。

下面是我的代码,它在该页面上的每种颜色之间进行更改,但仅在该页面上。

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

Javascript: 函数 setStyleSheet(url) { var stylesheet = document.getElementById("stylesheet"); stylesheet.setAttribute('href', url); }

我在外部保存了所需的 css 文件。任何帮助将不胜感激。谢谢。

最佳答案

理想情况您会使用 cookie,但如果您真的真的想要不使用 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];
}

请注意,当我说“理想情况下”时,我的真正意思是您应该使用 cookie - 它们的制作和使用几乎完全用于此目的,您不必处理粗略的边缘情况,例如是否已经存在 theme 在 URL 中,或者如果它要去另一个在 URL 中使用 theme 的域,如果您使用 Javascript 更改页面,它仍然可以工作,等等 - 但我相信这种方法应该也能工作。

关于javascript - 将 css href 属性更改为多个 html 页面 onclick,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36212370/

相关文章:

java - 哪个可互操作的 JavaScript 和 Grails/Java 模板框架?

javascript - 有没有办法像 JavaScript 中的 Date.now() 一样以毫秒为单位获取另一个时区的日期?

php - 从另一个文件调用php函数

html - 从右边距移动最右边的 float

css - 如何改变纸标签波纹效果的颜色

javascript - 在 KineticJS 中更改拖动的目标

javascript - 在 JavaScript 中渲染 B 样条动画的问题

html - 文本溢出和内联 block 的 Firefox 实现是否错误?

javascript - 使用javascript更改css中的动画属性

javascript - scrollspy 导航到不同的页面并返回同一位置