[OP] I understand that the sodium and chlorine in an individual NaCl molecule are bonded ionically, but how are the molecules in a crystal containing millions of these molecules bonded to each other?
There are no molecules in a NaCl crystal. That is, there is no specific chloride neighbor that a sodium ion "belongs to".
[OP] I'm confused because since the difference in charge between the Na and Cl in each molecule are "canceled" by the ionic bond, why do they still bond to other molecules of NaCl? Wouldn't they just "slide" over each other and not bond
The "cancellation" is true for dipoles (e.g. HCl) at large distances. However, if you come close enough, the two atoms in HCl still have positive and negative charges (partial charges in this case, because HCl forms covalent rather than ionic bonds).
[OP in comments] I understand that one sodium cation can ionically bond to one chloride anion, but how can one chloride anion bond to six sodium cations? If the Na+ has taken an extra electron from a Cl-, doesn’t that mean that that particular Cl- has no extra electrons left over to give? So how does it give an electron to six Na+’s in order to ironically bond to them?
Ionic bonding is sometimes explained has moving an electron from the metal to the non-metal. However, you can also form an ionic crystal from pre-formed ions, for instance from a sodium chloride solution where individual ions are surrounded by water. So the sodium has no need to give away 6 electrons, it just has to approach 6 anions.
It turns out that a chloride ion has plenty of space around it to accommodate 6 sodium ions. There is some repulsion between those sodium ions, but this is offset by the stronger attraction between unlike ions (the attraction is stronger because unlike ions at closer distance than like ions).