タイトルはおそらく何も起こりませんでしたので、ここで何が起こっているのですか。私は視覚的な変化のためにスタイルシートを交換するonclick()
関数を実行しようとしています。私がやっているやり方はreplace()
部分のhref
です。具体的にはの白いをの黒のに変更して、の値をstyles-black.cssに変更します。setAttribute()は関数のテキストをhrefの値として設定しています
私はjQueryの問題なしでこれをやっている:
$(".onoffswitch").click(function(){
if($('.onoffswitch-checkbox').is(':checked') == false) {
$("#pagestyle").attr('href', function(i, blackCSS) {
return blackCSS.replace('white', 'black');
});
}
});
私は専門家ではないので、これは非常に非効率的かもしれませんが、私はまだ勉強しようとしています。 今、バニラJSを使ってこれを複製しようとすると、奇妙な結果が得られます。まず、ここに私のコードは次のとおりです。
document.getElementById("pagestyle").setAttribute("href", (function(i,blackCss) {
return blackCSS.replace("white", "black");
}))
私はそれを実行した後、私は機能が働いたと.....これは私が」とは何であるかどうかを確認するためにhref
の値をチェックするdocument.getElementById('pagestyle').getAttribute('href');
でそれをフォローアップメートル取得:
"function (i,blackCss) {
return blackCSS.replace("white", "black");
}"
は、ここに要素です:
<link id="pagestyle" rel="stylesheet" type="text/css" href="function (i,blackCss) { return blackCSS.replace("white", "black"); }">
は明らかに私が何か間違ったことをやっています。奇妙なことは、私が自分自身をチェックしていなければ、私はそれが働いたと思うだろうということです!スタイルが変わります。 Chrome/IEツールを使用して要素を調べると、styles-black.cssのスタイルが適用されていることがわかります。しかし、なぜそれが要素の属性に関数を表示しているのでしょうか?それは正しいことができないことができますか?もちろん、私はそれがどのように行われているかを私に見せたいと思う人には公開されています。
編集 は、ここで要素の初期状態です。
<link id="pagestyle" rel="stylesheet" type="text/css" href='css/styles-white.css'>
あなたは...関数を呼び出していません。 'setAttribute(" href "、(function(i、blackCss){blah blah blah;})()); –
複雑なjQueryメソッドを基本的なJavaScriptメソッドに置き換えることはできません。おそらく、 'pagestyle.href = pagestyle.href.replace(" white "、" black ");'などが必要です。 –