Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使我的样式表切换,stick_Javascript_Html - Fatal编程技术网

Javascript 如何使我的样式表切换,stick

Javascript 如何使我的样式表切换,stick,javascript,html,Javascript,Html,我已经编写了一些代码,可以在普通版本和可访问版本之间更改样式表。 理论上,这是可行的,但是只要你刷新页面,它就会回到默认版本。我知道我需要存储某种cookie,我尝试了在Google上找到的几个脚本,但都不起作用。 如果有人知道我需要什么样的样式表才能在整个站点中粘贴,直到另一个样式表被请求,我们将不胜感激 迄今为止的代码: <link type="text/css" href="style.css" rel="stylesheet" title="normal" /> <li

我已经编写了一些代码,可以在普通版本和可访问版本之间更改样式表。 理论上,这是可行的,但是只要你刷新页面,它就会回到默认版本。我知道我需要存储某种cookie,我尝试了在Google上找到的几个脚本,但都不起作用。 如果有人知道我需要什么样的样式表才能在整个站点中粘贴,直到另一个样式表被请求,我们将不胜感激

迄今为止的代码:

<link type="text/css" href="style.css" rel="stylesheet" title="normal" />
<link type="text/css" href="css/accessible.css" rel="alternate stylesheet" title="accessible" />

<form>
    <input type="submit" onclick="switch_style('normal');return false;" name="theme" value="" id="normal" title="View the site in it's original format">
    <input type="submit" onclick="switch_style('accessible');return false;" name="theme" value="" id="accessible" title="View the site in it's simplest form">
</form>

这是我加入的javascript,它似乎在某个地方有一个bug,但我一辈子都找不到它:

var style_cookie_name = "style" ;
var style_cookie_duration = 30 ;

function switch_style ( css_title )
{
var i, link_tag ;
for (i = 0, link_tag = document.getElementsByTagName("link") ;
i < link_tag.length ; i++ ) {
if ((link_tag[i].rel.indexOf( "stylesheet" ) != -1) &&
  link_tag[i].title) {
  link_tag[i].disabled = true ;
  if (link_tag[i].title == css_title) {
    link_tag[i].disabled = false ;
  }
}
set_cookie( style_cookie_name, css_title,
  style_cookie_duration );
}
}
function set_style_from_cookie()
{
var css_title = get_cookie( style_cookie_name );
if (css_title.length) {
switch_style( css_title );
}
}
function set_cookie ( cookie_name, cookie_value,
lifespan_in_days, valid_domain )
{
var domain_string = valid_domain ?
                   ("; domain=" + valid_domain) : '' ;
document.cookie = cookie_name +
                   "=" + encodeURIComponent( cookie_value ) +
                   "; max-age=" + 60 * 60 *
                   24 * lifespan_in_days +
                   "; path=/" + domain_string ;
}
function get_cookie ( cookie_name )
{
var cookie_string = document.cookie ;
if (cookie_string.length != 0) {
    var cookie_value = cookie_string.match (
                    '(^|;)[\s]*' +
                    cookie_name +
                    '=([^;]*)' );
    return decodeURIComponent ( cookie_value[2] ) ;
}
return '' ;
}
var style\u cookie\u name=“style”;
var style_cookie_duration=30;
功能开关样式(css标题)
{
变量i,链接标签;
对于(i=0,link_tag=document.getElementsByTagName(“link”);
i
get\u cookie函数中有一些小错误

删除:

function get_cookie ( cookie_name )
{
var cookie_string = document.cookie ;
if (cookie_string.length != 0) {
    var cookie_value = cookie_string.match (
            '(^|;)[\s]*' +
            cookie_name +
            '=([^;]*)' );
    return decodeURIComponent ( cookie_value[2] ) ;
}
return '' ;
}
替换为:

function get_cookie ( cookie_name )
{
var cookie_string = document.cookie ;
if (cookie_string.length != 0) {
    var cookie_value = cookie_string.match(
        '(^|;) ?' + 
        cookie_name + 
        '=([^;]*)(;|$)' );
    return decodeURIComponent ( cookie_value[2] ) ;
}
return '' ;
}

希望它能帮助您或其他人解决同样的问题。

顺便说一句,如果您将
type=“submit”
更改为
type=“button”
您将不需要
;返回false为什么要用JavaScript解决这个问题?最好是服务器端解决。询问代码的问题必须证明对所解决问题的理解程度最低。包括尝试过的解决方案、它们不起作用的原因以及预期结果。另见:。顺便说一句,“我搜索了教程,什么都没做”不算尝试。是的,你可以通过设置javascript cookie来实现这一点,但你不能指望有人完全为你编写代码。你需要做一些研究,自己破解它,然后发布代码让人们看到哪里出了问题。我已经用我到目前为止尝试过的代码更新了这篇文章……顺便说一句,这段代码作为使用javascript切换样式表的“教程”出现在许多网站上。同样的问题发生在所有人身上,因此可能会有其他人在寻找同样的问题。这不是我的解决方案,我最终找到了Michael Joseph的解决方案,并为我解决了问题。