ボタン1とボタン2を用意してフィルターをかけます
ボタンを押すと中身が入れ替わりますが追加される形にしたい
別々のボタンでフィルタをかけながら、
filter = 'blur(3px) grayscale(100%)'のように追加されていく形にしたいです
ボタンを押したときに変数にフィルター名を追加する方法は考えましたがそれが正しいのかはわかりません
<div id="aaa" style="background:red;width:300px;height:300px">hello</div> <input type="button" value="ボタン1" onclick="document.getElementById('aaa').style.filter = 'blur(3px)'"> <input type="button" value="ボタン2" onclick="document.getElementById('aaa').style.filter = 'grayscale(100%)'"> <input type="button" value="確認用" onclick="alert(aaa.style.filter)">
これは動かない <div id="aaa" style="background:red;width:300px;height:300px">hello</div> <input type="button" value="ボタン1" onclick="document.getElementById('aaa').style.filter+ = 'blur(3px)'"> <input type="button" value="ボタン2" onclick="document.getElementById('aaa').style.filter+ = 'grayscale(100%)'"> <input type="button" value="確認用" onclick="alert(aaa.style.filter)">
>ボタンを押したときに変数にフィルター名を追加する方法は考えましたがそれが正しいのかはわかりません
実現できるなら「正しい」と言えるのでは。
考えただけですか?何かしら試して想定の動作をしてませんか?
マシな書き方があれば教えていただきたいです
<script>
var f="";
function a(){
if(s==0){
f+="blur(3px) ";
}
if(s==1){
f+="grayscale(100%) ";
}
document.getElementById('aaa').style.filter = f;
}
</script>
<div id="aaa" style="background:red;width:300px;height:300px">hello</div>
<input type="button" value="" onclick="s=0;a()">
<input type="button" value="" onclick="s=1;a()">
<input type="button" value="" onclick="alert(aaa.style.filter)">
質問本文に記載してください。
>マシな書き方があれば教えていただきたいです
特に悪いとは思いません。要件満たせてるのでしたら。
しいてなら
a(0) のように引数にして受け取るくらいはしておきたいですね。そこでしか使わない変数をグローバルにする意味ないですし。