Reputation: 5565
This is my HTML code for Modal:
<div class="modal">
<div class="modal-content">
<h4>Modal Header</h4>
<p>A bunch of text</p>
</div>
<div class="modal-footer">
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
</div>
</div>
And this is how I am referencing it in JS:
function aFunction() {
var elem = document.querySelector('.modal');
var instance = M.Modal.getInstance(elem);
instance.open();
}
I am calling the function on button click but the modal doesn't show up. The only change I notice is that scrollbars on the right disappear.
Upvotes: 0
Views: 3282
Reputation: 20840
Which version are you using?
This is how it is done in example the docs for v1.0.0:
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('.modal');
var instances = M.Modal.init(elems);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css" rel="stylesheet" />
<!-- Modal Trigger -->
<button data-target="modal1" class="btn modal-trigger">Open the modal</button>
<button class="btn">Do something else</button>
<!-- Modal Structure -->
<div id="modal1" class="modal">
<div class="modal-content">
<h4>Modal Header</h4>
<p>A bunch of text</p>
</div>
<div class="modal-footer">
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
</div>
</div>
Or if you want to open it programatically (via your own functions), you need to init the modal first.
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('.modal');
var instances = M.Modal.init(elems);
var singleModalElem = document.querySelector('#modal1');
var instance = M.Modal.getInstance(singleModalElem);
const modalbtn = document.querySelector('#open')
modalbtn.addEventListener('click', () => {
instance.open();
// Do other stuff
})
});
<link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<!-- Modal Structure -->
<div id="modal1" class="modal">
<div class="modal-content">
<h4>Modal Header</h4>
<p>A bunch of text</p>
</div>
<div class="modal-footer">
<a href="#!" class="modal-close waves-effect waves-green btn-flat">Agree</a>
</div>
</div>
<button id="open">Open a single modal</button>
Upvotes: 3