The issue is that a button can contain only Inline Elements, and div is a Block Element. alternative is to use span
<button type="submit" onclick="window.location.href='events.html'">
<span id="box1" class="eventContainer">
<h3>CLICK ON ME!</h3>
<p>Description</p>
<img>
</span>
</button>
Block-level Elements
A block-level element always starts on a new line and takes up the full width available (stretches out to the left and right as far as it can).
The element is a block-level element.
Examples of block-level elements:
<div>
<h1> - <h6>
<p>
<form>
Inline Elements An inline element does not start on a new line and only takes up as much width as necessary.
This is an inline element inside a paragraph.
Examples of inline elements:
<span>
<a>
<img>
The < div > Element
The element is a block-level element that is often used as a container for other HTML elements.
The element has no required attributes, but style and class are common.
When used together with CSS, the element can be used to style blocks of content:
Example
<div style="background-color:black; color:white; padding:20px;">
<h2>London</h2>
<p>London is the capital city of England. It is the most populous city in the United Kingdom, with a metropolitan area of over 13 million inhabitants.</p>
</div>
More info can be found here