2017-01-05 20 views
2

私はあなたに爆発メッセージを送信するために電子メールを選択できるWebアプリケーションを作成しようとしています。私は、ユーザーが自分のメールを取り込むためにスカウト、親、リーダーの組み合わせを選ぶことを可能にするフィルターが欲しい。私はコードがうまくいかない理由を理解できません。JavaScriptの終わりと関係があると思いますが、わかりません。目標は、「フィルタ」チェックボックスがチェックされている場合は、ターゲットデータタイプを持つテーブル内のすべてのボックスをチェックします(「リーダー」が選択されている場合はすべて「リーダー」データタイプのチェックボックス以前は、行をなしとして表示し、行全体をデータ型に割り当てることでフィルターをかけようとしましたが、そのコードをバックアップするのを忘れました。フィルタJSプログラムが動作しない

次のようになります。

<div class = "SelectionContainer"> 
<div class = "FiltersContainer"> 
    <ul id="filters"> 
     <li> 
     <input type='checkbox' name='Filter' value="Leader" id="filter-Leader"> 
     <label for="filter-Leader">Leaders</label> 
     </li> 
     <li> 
     <input type='checkbox' name='Filter' value="Parent" id = "filter-Parent"> 
     <label for="filter-Parent">Parents</label> 
     </li> 
     <li> 
     <input type='checkbox' name='Filter' value="Scout" id = "filter-Scout"> 
     <label for="filter-Scout">Scouts</label> 
     </li> 
    </ul> 
</div> 
<div class = "EmailsContainer"> 
    <form action = "broadcasting.php" method = "get"> 
     <table class = 'hubTable' id = 'FilterTarget'> 
     <tr class = 'tableheader'> 
      <td class = 'hubCell'>Email</td> 
      <td class = 'hubCell'>Name</td> 
      <td class = 'hubCell'>Type</td> 
      <td class = 'hubCell'>Subtype</td> 
     </tr> 
     <tr class = 'hubRow' > 
      <td class = 'hubCell'><input class = 'hubCheck' type='checkbox' data-type='Scout' name='check_list[]' value='[email protected]' > [email protected] </td> 
      <td class = 'hubCell'>Biden, Mike </td> 
      <td class = 'hubCell' id = 'Type'>Scout </td> 
      <td class = 'hubCell' id = 'SubType'>Senior Patrol Leader </td> 
     </tr> 
     <tr class = 'hubRow' > 
      <td class = 'hubCell'><input class = 'hubCheck' type='checkbox' data-type='Parent' name='check_list[]' value='[email protected]' > [email protected] </td> 
      <td class = 'hubCell'>Biden, Sue </td> 
      <td class = 'hubCell' id = 'Type'>Parent </td> 
      <td class = 'hubCell' id = 'SubType'>Unassigned </td> 
     </tr> 
     <tr class = 'hubRow' > 
      <td class = 'hubCell'><input class = 'hubCheck' type='checkbox' data-type='Leader' name='check_list[]' value='[email protected]' > [email protected] </td> 
      <td class = 'hubCell'>smith, Michael </td> 
      <td class = 'hubCell' id = 'Type'>Leader </td> 
      <td class = 'hubCell' id = 'SubType'>Scout Master </td> 
     </tr> 
     <tr class = 'hubRow' > 
      <td class = 'hubCell'><input class = 'hubCheck' type='checkbox' data-type='Scout' name='check_list[]' value='[email protected]' > [email protected] </td> 
      <td class = 'hubCell'>Gill, Russel </td> 
      <td class = 'hubCell' id = 'Type'>Scout </td> 
      <td class = 'hubCell' id = 'SubType'>Patrol Leader </td> 
     </tr> 
     </table> 
    </form> 
</div> 

私はJSはそれを見つけることができるように、入力ボックスをwithingデータ型のタグを使用してフィルタリングしようとした私のJSコードは次のようになります。

var filterTarget = document.querySelectorAll(".hubCheck input[type="checkbox"]"); 
var filters = document.querySelectorAll("#filters li"); 

for (var i = 0; i < filters.length; i++){ 
    filters[i].addEventListener("click", filterItems, false); 
    filters[i].checked = true; 
} 
function filterItems(e){ 
    var clickedItem = e.target; 
    if (clickedItem.checked == true) { 
    document.getElementById("checkbox").checked = true; 
    } else if (clickedItem.checked == false) { 
     document.getElementById("checkbox").checked = false; 
    } else { 

    } 
} 

私はHTMLとPHPを使っているので、私は言語に精通していないので、JSのどこかにあるとエラーがあると思います。よりスマートで経験豊かな目のセットが大いに感謝されるでしょう。前もって感謝します!

+0

あなたの代わりにフィルタ(LI)のfilterTarget(入力チェックボックス)に.checkedを設定する必要があると思います。 getElementByIdもチェックボックスをターゲットにしていません(それぞれ独自のIDを持っています) – softwarenewbie7331

答えて

1

document.getElementById( "checkbox")。チェックボックスのあるIDがないため、の構文がチェックされています。あなたはデータ型の値と比較していません。私はあなたのデータ型に入れたものをクラス名にも使うことをお勧めします。

私の解決策のHTML

<div class = "SelectionContainer"> 
<div class = "FiltersContainer"> 
    <ul id="filters"> 
     <li> 
     <input type='checkbox' name='Filter' value="Leader" id="filter-Leader"> 
     <label for="filter-Leader">Leaders</label> 
     </li> 
     <li> 
     <input type='checkbox' name='Filter' value="Parent" id = "filter-Parent"> 
     <label for="filter-Parent">Parents</label> 
     </li> 
     <li> 
     <input type='checkbox' name='Filter' value="Scout" id = "filter-Scout"> 
     <label for="filter-Scout">Scouts</label> 
     </li> 
    </ul> 
</div> 
<div class = "EmailsContainer"> 
    <form action = "broadcasting.php" method = "get"> 
     <table class = 'hubTable' id = 'FilterTarget'> 
     <tr class = 'tableheader'> 
      <td class = 'hubCell'>Email</td> 
      <td class = 'hubCell'>Name</td> 
      <td class = 'hubCell'>Type</td> 
      <td class = 'hubCell'>Subtype</td> 
     </tr> 
     <tr class = 'hubRow' > 
      <td class = 'hubCell'><input class = 'hubCheck Scout' type='checkbox' data-type='Scout' name='check_list[]' value='[email protected]' > [email protected] </td> 
      <td class = 'hubCell'>Biden, Mike </td> 
      <td class = 'hubCell' id = 'Type'>Scout </td> 
      <td class = 'hubCell' id = 'SubType'>Senior Patrol Leader </td> 
     </tr> 
     <tr class = 'hubRow' > 
      <td class = 'hubCell'><input class = 'hubCheck Parent' type='checkbox' data-type='Parent' name='check_list[]' value='[email protected]' > [email protected] </td> 
      <td class = 'hubCell'>Biden, Sue </td> 
      <td class = 'hubCell' id = 'Type'>Parent </td> 
      <td class = 'hubCell' id = 'SubType'>Unassigned </td> 
     </tr> 
     <tr class = 'hubRow' > 
      <td class = 'hubCell'><input class = 'hubCheck Leader' id="asd" type='checkbox' data-type='Leader' name='check_list[]' value='[email protected]' > [email protected] </td> 
      <td class = 'hubCell'>smith, Michael </td> 
      <td class = 'hubCell' id = 'Type'>Leader </td> 
      <td class = 'hubCell' id = 'SubType'>Scout Master </td> 
     </tr> 
     <tr class = 'hubRow' > 
      <td class = 'hubCell'><input class = 'hubCheck Scout' type='checkbox' data-type='Scout' name='check_list[]' value='[email protected]' > [email protected] </td> 
      <td class = 'hubCell'>Gill, Russel </td> 
      <td class = 'hubCell' id = 'Type'>Scout </td> 
      <td class = 'hubCell' id = 'SubType'>Patrol Leader </td> 
     </tr> 
     </table> 
    </form> 
</div> 

JAVASCRIPT

var filterTarget = document.querySelectorAll('.hubCheck input[type="checkbox"]'); 
var filters = document.querySelectorAll("#filters li"); 

for (var i = 0; i < filters.length; i++){ 
    filters[i].addEventListener("click", filterItems, false); 
    filters[i].checked = true; 
} 
function filterItems(e){ 
    var clickedItem = e.target; 

    if (clickedItem.checked == true) { 
    var elem= document.getElementsByClassName(clickedItem.value); 
    checkboxupdater(elem, true); 

} else if (clickedItem.checked == false) { 
var elem= document.getElementsByClassName(clickedItem.value); 
     checkboxupdater(elem, false); 
    } else { 

    } 
} 

function checkboxupdater(ele,val) 
{ 
    for(var ii = 0; ii < ele.length; ii++) 
    { 
    ele[ii].checked = val; 
    } 
} 
+0

jsfiddle link https://jsfiddle.net/jhzzun2d/ – reza

+0

問題を解決してくれてありがとうございました。賢いアイデア!再度、感謝します! –

関連する問題