チェックボックスにチェックを入れた時に、label属性の背景色を変更したいです。
現在、以下のような形で実装を試みています。
※label内のチェックボックスは複数実装しています。
PHP
1<div id="modal-content"> 2<input type="text" id="keyword" name="keyword" size="30" disabled="disabled"/> 3 <div id="material_select"> 4 <div class="all-container"> 5 <div id="check-label-container"> 6 <label class="check-label"> 7 <span>テスト1</span> 8 <input type="checkbox" name="check" value="テスト1"> 9 <span class="checkmark"></span> 10 </label> 11 </div> 12 </div> 13 </div> 14</div>
JavaScript
1<script> 2window.onload = function() { 3 var buttons = document.getElementById('material_select').getElementsByTagName('input'); 4 console.log('確認'); 5 for ( var i = 0; i < buttons.length; i ++ ) { 6 console.log(buttons[i]); 7 buttons[i].onclick = function() { 8 console.log('確認2'); 9 var keyword = document.getElementById('keyword'); 10 console.log('確認3'); 11 if(this.checked) { 12 keyword.value += this.value + " "; 13 console.log('確認4'); 14 buttons[i].parentNode.style.backgroundColor = '#CC28A8'; 15 } else { 16 keyword.value = keyword.value.replace(new RegExp(this.value + " ","g"),""); 17 } 18 } 19 } 20} 21</script>
コンソールでは確認4まで出力された後に、以下のメッセージが出力されています。
Uncaught TypeError: Cannot read property 'parentNode' of undefined at HTMLInputElement.buttons.(/anonymous function).onclick
getElementsByTagNameの戻り値がリストなのでparentNodeでは親要素を取得できていないのかなというところまでは何となく分かったのですが、どのように対処すれば良いのかがいまいち分かりません...
どなたかご教授お願い致します。
回答2件
あなたの回答
tips
プレビュー