2017-03-21 7 views
0

要素に子ノードがあるときにモーダルを表示するボタンを取得しようとしています。だから、それをクリックすると、関数がアクティブになり、それに応じてモーダルが表示されます。これは、id "myBtn"をbutton要素に追加することで行います。未知参照を取得するボタンの機能を変更するときにエラーが発生する

これが私のHTMLです:

<li id='parentNode'> 
    <button onclick="child_check()" id="button" class='customer-btn'><a href='#'>Customer 6</a></button> 
    <ul> 
    <li id='childNode'> 
     <a href='#'>Customer A</a> 
    </li> 
    </ul> 
</li> 

そして、これは私のJSです:

<script> 

    var modal = document.getElementById('myModal'); 
    // Get the button that opens the modal 
    var btn = document.getElementById(" myBtn"); 
    // Get the <span> element that closes the modal 
    var span = document.getElementsByClassName("close")[0]; 
    btn.onclick = function() { 
     modal.style.display = "block"; 
    } 


    // When the user clicks on <span> (x), close the modal 
span.onclick = function() { 
    modal.style.display = "none"; 
    } 
    // When the user clicks anywhere outside of the modal, close it 

// Check to see if the list element has a child 
function child_check() { 
    var child = document.getElementById("childNode"); 
    var parent_check = document.getElementById("parentNode").contains(child); 
    var parent = document.getElementById("parentNode") 
    var button = document.getElementById("button") 
    if (parent_check){ 
    button.id += " myBtn"; 
    // Code that activates modal 
    // Get the modal 

    // When the user clicks on the button, open the modal 

    } 
} 


</script> 

任意のヘルプ?私はここに道オフだ

編集:はまだ次のエラーなって、動作しているようだ:Uncaught TypeError: Cannot read property 'contains' of null at child_check (profile:259)

+2

'それはボタンelement'にID「myBtnです。」を追加することでこれを行うだろう - 実際にそれがparentNodemyBtn''にparentNode' 'からIDを変更します - だけ' getElementById'が機能した場合 - あなたは 'ドキュメントを意味しました.getElementById'おそらく –

+1

@JaromandaXはあなたのID調整に関して正しいです。おそらくあなたは '='ではなく '+ ='を望みます。また: "とそれに応じてモーダルを表示するには、id" myBtn "をボタン要素に追加することでこれを行います" - 要素にIDを追加するだけでモーダルが起動されると主張していますか?それは間違って聞こえるから... –

+0

@JaromandaX遅い返事をおかけして申し訳ありませんが、実際の要素ではなく、IDを参照していたことがわかりませんでした。私は親要素に新しいIDを追加したいだけです。 – Amon

答えて

1

モーダルはさておき(私はここにはモーダルコードを見ないが)、おそらくあなたの+= " myBtn"にスペースを追加することができますボタンを 'myBtn'というIDに指定するのに成功するようにします。そうでない場合は、単純な "="を使用して、必要なすべてのIDをスペースで区切って指定します。

+0

私の質問をモーダルコードで更新しました。問題 – Amon

+1

私が知る限り、parentNodeは変数ではありません。あなたはそれを参照しようとしますが、それをどこにも定義していません。また、parentNode.idを設定しているときに、それが1つのIDであれば、スペースは必要ありません。既にIDを持っていて、別のIDを付ける場合は、+ =を使用してそのIDの前にスペースを挿入して、新しいIDと追加するIDが分かれることを認識します。言い換えれば、 'id =" oldIDnewID "の代わりに' id = "oldID newID" 'と言うようにしてください。 – Bango

+0

パラメータで参照したのですか?あなたはその機能をどのように使用するのですか? – Amon

関連する問題