ユーザーがページ上の画像またはリンクをクリックしたときにモーダル(オーバーレイ)がポップアップするはずのページがあります。ページが最初に読み込まれるとき、モーダルは空白であり、次のhtmlで非表示になっています。
<!--// MODAL: ITEM PROFILE //-->
<div id="profile" class="modal" style="visibility: hidden">
</div>
<!--// OVERLAY //-->
<div id="overlay" style="visibility: hidden"></div>
ユーザーが画像またはリンクをクリックすると、モーダルは次の関数を使用してトリガーされることになっています。
function itemModal(id){
var modal = $("#profile");
if (modal == null){
alert("Modal not found!");
}
if($(" #profile").style.visibility == "hidden"){
$.ajax
(
{ //Ajax call to get item data
type: "POST",
url: "/organizer/getItem",
data: { item_id: id },
dataType: "html",
success: function( responseText, textStatus, XHR )
{
// select the element with the ID profile and insert the HTML
$("#profile" ).html( responseText );
$("#profile").style.visibility = "visible";
$("#overlay").style.visibility = "visible"
}
}
);
}
else{ //Modal is being displayed, hide it and remove contents
$("#profile").html('');
$("#profile").style.visibility = "hidden";
$("#overlay").style.visibility = "hidden";
}
}
ただし、クリックしてモーダルをトリガーすると、エラーメッセージが表示されますUncaught TypeError: Cannot read property 'visibility' of undefined
。私はこれをキャッチしようとアラートを入れましたが、プロファイル要素は存在しますが、インラインcssが定義されていても、別のファイルに約250行あるにもかかわらず、スタイルは明らかにそうではないことがわかりました。style属性がnullとして表示されるのはなぜですか?