样式表加载器返回TypeError

时间:2014-08-20 16:05:20

标签: javascript jquery css

我有一小段代码用于加载用户从列表中选择的样式表。代码加载样式表onload,但最近我去了我的网站测试新的东西。加载页面后,我发现样式表没有改变,我在控制台中查看以确保脚本已加载,但却看到了错误:

  

未捕获的TypeError:无法读取null的属性“2” - 而且它是   在这行代码中发现:`return decodeURIComponent(   cookie_value [2]);

我真的不知道如何解决这个问题我在主脚本中没有改变任何东西。这是完整的代码:

 // *** TO BE CUSTOMISED ***

var style_cookie_name = "style" ;
var style_cookie_duration = 3000 ;

// *** END OF CUSTOMISABLE SECTION ***
// You do not need to customise anything below this line

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 '' ;
}

请详细说明答案......我不是一个JavaScript家伙,一个伙伴帮我编写代码。

2 个答案:

答案 0 :(得分:1)

cookie_value [2]为空

尝试:

if(cookie_value != null && cookie_value.length>0) // do work

您还可以在try catch

中包装decodeURIComponent

答案 1 :(得分:0)

变量cookie_valuenull,因为正则表达式匹配未返回任何结果:

var cookie_value = cookie_string.match (
'(^|;)[\s]*' +
cookie_name +
'=([^;]*)' );