以下のコードでページを読み込もうとすると、2つのエラーメッセージが表示されます。エラーメッセージは以下のとおりです。CSSファイルを動的に切り替える
- "キャッチされない例外TypeError:。HTMLAnchorElement.colのヌルのプロパティ 'のhref' を設定することはできません(匿名関数).onclick(http://www.jimbrink.org/:363:17)"
- が「キャッチされないにReferenceError:bindEventsがで定義されていません(インデックス):375 "
クリックすると別のCSSファイル(フォントが異なる)に切り替わるリンクを作成しようとしています。
(BONUSの質問:?リンクは2つのスタイルシートを切り替えるための方法があります)
私は別の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>
Questionの 'html'に要素がありません。' id'が '' style "'に設定されています。 – guest271314
うん。しかし、コードで定義されている "el.dataset.style"からcss.styleを設定しないでください。 –
'console.log(css)'は、 'var css = document.getElementById( 'style');'の後ろに 'console'でどのようなログを記録しますか?属性セレクタを使用して要素を選択できます。質問の現在の 'html'は' id'' "style" 'を持つ要素を含んでいませんが? – guest271314