let volume = 0.3; // 初期のボリューム
function initVolume(elementId){
// ローカルストレージに値が保存されているならvolumeに値を設定する
const savedVolume = localStorage.getItem('hatodemowakaru-volume');
if(savedVolume)
volume = Number(savedVolume);
// div要素(1)を生成し、ここへレンジスライダーとラベル、現在のボリュームの値を表示する要素を追加する
const $div = document.createElement('div');
// ラベルの追加
const $span1 = document.createElement('span');
$span1.innerHTML = '音量:';
$div.appendChild($span1);
// レンジスライダーの追加
const $range = document.createElement('input');
$range.type = 'range';
$range.value = Math.round(volume * 100);
$range.style.width = '250px';
$range.style.verticalAlign = 'middle';
$div.appendChild($range);
// 現在のボリュームの値を表示する要素を追加
const $span2 = document.createElement('span');
$span2.innerText = Math.round(volume * 100);
$span2.style.marginLeft = '16px';
$div.appendChild($span2);
// レンジスライダーが操作されたらvolumeの値と設定されている値の表示を変更する
$range.addEventListener('input', () => {
const value = $range.value;
$span2.innerText = value;
volume = value / 100;
setVolume();
});
// volumeの値をローカルストレージに保存する
$range.addEventListener('change', () => localStorage.setItem('hatodemowakaru-volume', volume.toString()));
// 音量テスト用のボタン(2)を追加する
const $button = document.createElement('button');
$button.innerHTML = '音量テスト';
$button.style.width = '120px';
$button.style.height = '40px';
$button.style.marginTop = '12px';
$button.style.marginLeft = '32px';
// 音量テスト用のボタンがクリックされたらsounds[0]を再生する
$button.addEventListener('click', () => {
sounds[0].currentTime = 0;
sounds[0].play();
});
// (1)と(2)を追加する
const $element = document.getElementById(elementId);
$element.appendChild($div);
$element.appendChild($button);
setVolume();
// volume を HTMLAudioElement.volume に反映させる
function setVolume(){
for(let i = 0; i < sounds.length; i++)
sounds[i].volume = volume;
}
}