【发布时间】:2016-12-28 04:30:38
【问题描述】:
尝试使用以下代码加载页面时收到两条错误消息。错误消息是:
- “未捕获的类型错误:无法在 HTMLAnchorElement.col.(匿名函数).onclick (http://www.jimbrink.org/:363:17) 处设置 null 的属性 'href'”
- “未捕获的 ReferenceError:bindEvents 未定义在(索引):375”
我正在尝试创建一个链接,当单击该链接时,它会切换到另一个 css 文件(使用不同的字体)。
(奖励问题:有没有办法让链接在两个样式表之间切换?)
我从另一个 StackOverflow 问题中得到了这个,但我似乎无法让代码在我的情况下工作。
这是链接:
<li><a href="#" class="changeStyle" data-style="css/style.comicsans.css" data-type="text/css" data-rel="stylesheet">JB's Fav Font</a></li>
这是页面底部的js函数:
<!-- cssswitcher js -->
<script type='text/javascript'>
window.onload = function bindEvents(){
var css=document.getElementById('style');
var col=document.querySelectorAll('a.changeStyle');
/* iterate through collection and assign listener */
for( var n in col )if( col[n].nodeType==1 ) col[n].onclick=function(e){
e.preventDefault();/* prevent jumping to top of page etc */
var el=typeof(e.target)!='undefined' ? e.target : e.srcElement;
/* assign style attributes */
css.href=el.dataset.style;
css.rel=el.dataset.rel;
css.type=el.dataset.type;
/* store reference to style selected in localstorage */
localStorage.setItem( 'style', el.dataset.style );
};
/* if there is a reference to the user's css choice in storage, assign it */
if( localStorage.getItem( 'style' )!=null ) css.href=localStorage.getItem( 'style' );
}
document.addEventListener( 'DOMContentLoaded', bindEvents, false );
</script>
【问题讨论】:
-
问题的
html处没有元素将id设置为"style"。 -
是的。但是css.style不应该从代码中定义的“el.dataset.style”设置吗?
-
console.log(css)在console跟在var css=document.getElementById('style');之后登录什么?您可以使用属性选择器选择元素。虽然当前html在 Question 不包含具有id"style"? 的元素
标签: javascript jquery css