次のコードを実行すると、ドロップダウンメニューのCurrent Childrenオプションをクリックすると、対応するModalが画面に表示されます私は `Uncaught TypeErrorのためModalを閉じることができません:ヌルのプロパティ 'onclick'を設定できません
spanModal.onclick = function()
エラーで次のエラーを取得するとして、それを閉じることができませんです:
userTemplate.js:25 Uncaught TypeError: Cannot set property 'onclick' of null
at HTMLAnchorElement.<anonymous> (userTemplate.js:25)
at HTMLAnchorElement.dispatch (jquery-3.2.1.js:5206)
at HTMLAnchorElement.elemData.handle (jquery-3.2.1.js:5014)
は、なぜ私はこのエラーが出るのですか?
HTML:
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Children <span class="caret"></span></a>
<ul class="dropdown-menu">
<li><a href="#" class="menu" id="currentChildren">Current Children</a></li>
<li>
</ul>
</li>
</ul>
</div>
<div id="currentChildrenModal" class="modal">
<div class="modal-content">
<span class="close" id="currentChildrenModalSpan">×</span>
<p>List of all currently enrolled children. Include option to filter by group.</p>
</div>
</div>
Javascriptを:
$(".menu").on("click", function()
{
var modalFireButton;
var modalName;
var spanModal;
var span;
//get Id of button cliced
modalFireButton = $(this).attr('id');
//set variable for corresponding modal
modalName = (modalFireButton + "Modal");
modalName = document.getElementById(modalName);
span = (modalName + "Span");
spanModal = document.getElementById(span)
// spanModal = document.getElementById(spanModal);
modalName.style.display='block';
spanModal.onclick = function()
{
modalName.style.display = "none";
}
});
をまたがるように扱う取得する
Span
を追加する必要がありcurrentChildrenModal
を取得するために
へ正しい。あなたの場合は、スパン名を "modal.id +" Span " –span = (modalName.id + "Span");