Market
About This Attraction
Chatuchak Market, located in Bangkok, Thailand, is one of the largest weekend markets in the world. It spans over 35 acres and houses more than 15,000 stalls, offering a wide array of goods ranging from clothing and accessories to home decor and antiques. The market is organized into sections, making it easier for visitors to find specific items. A helpful piece of Chatuchak Market travel information is that its open on Saturdays and Sundays from 9 AM to 6 PM, with some parts also open on Fridays.
Visitors can enjoy a variety of food options available throughout the market, including traditional Thai dishes and international cuisine. Accessibility is convenient as the market is reachable via public transportation such as the BTS Skytrain and MRT subway, with nearby stations providing easy access. Its advisable to wear comfortable shoes due to the vast area covered by the market. For anyone planning a visit, it's helpful to go early in the day to avoid crowds and heat.
Location Details
Address
Kamphaeng Phet 2 Rd, Chatuchak, Bangkok 10900, Thailand
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
Free
Child
Free
Student
Free
Senior
Free
Opening Hours & Booking
Open
Days
Saturday and Sunday
Hours
9:00 AM to 6:00 PM
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
Vibrant night market with street food, bars, and shops.
A world-class performance showcasing Thailand's cultural heritage with stunning visuals and traditional Thai arts.
Historic royal residence complex with museums and gardens.
Former royal palace, now closed for renovation
Museum with Thai antiques and art
Tallest hotel in Southeast Asia with observation deck.
Museum showcasing handcrafted dolls and traditional Thai costumes.
A stunning marble temple known for its beautiful architecture and serene atmosphere.
Museum of Thai art and antiques in a traditional teak house.
Luxury shopping mall with high-end brands, dining, and entertainment.
";
}
// Initialize modal controls
const initModalControls = function() {
console.log('Initializing modal controls');
const modal = document.getElementById('attraction-modal');
const closeBtn = document.querySelector('.attraction-modal-close');
if (closeBtn) {
closeBtn.addEventListener('click', function() {
modal.style.display = 'none';
document.body.style.overflow = '';
});
}
window.addEventListener('click', function(event) {
if (event.target === modal) {
modal.style.display = 'none';
document.body.style.overflow = '';
}
});
// Make attraction cards clickable
const attractionCards = document.querySelectorAll('.attraction-card');
console.log('Found ' + attractionCards.length + ' attraction cards');
attractionCards.forEach(card => {
card.addEventListener('click', function(e) {
openModalWithCardData(this);
});
});
};
// Function to open modal with card data
const openModalWithCardData = function(card) {
// Get data from hidden div
const data = card.querySelector('.attraction-full-data');
if (!data) {
console.error('No attraction data found in card');
return;
}
const modal = document.getElementById('attraction-modal');
if (!modal) {
console.error('Modal element still not found after creation attempt');
return;
}
// Helper function to safely get element text
function getElementText(selector) {
const element = data.querySelector(selector);
return element ? element.textContent : '';
}
try {
// Basic Info
document.getElementById('attraction-modal-title').textContent = getElementText('.attraction-name');
document.getElementById('attraction-modal-type').textContent = getElementText('.attraction-type-full');
document.getElementById('attraction-modal-description').textContent = getElementText('.attraction-description-full');
// Reset all containers to hidden
['attraction-modal-hours-container', 'attraction-modal-price-container',
'attraction-modal-address-container', 'attraction-modal-image-container'].forEach(id => {
const container = document.getElementById(id);
if (container) container.style.display = 'none';
});
// Rating
const ratingText = getElementText('.attraction-rating-full');
if (ratingText) {
const ratingValue = parseFloat(ratingText);
if (!isNaN(ratingValue)) {
const ratingValueEl = document.getElementById('attraction-modal-rating-value');
const ratingFillEl = document.getElementById('attraction-modal-rating-fill');
if (ratingValueEl) ratingValueEl.textContent = ratingValue.toFixed(1) + '/10';
if (ratingFillEl) ratingFillEl.style.width = (ratingValue * 10) + '%';
}
}
// Show the modal
modal.style.display = 'block';
document.body.style.overflow = 'hidden'; // Prevent background scrolling
console.log('Modal opened successfully');
} catch (error) {
console.error('Error opening modal:', error);
}
};
// Try to create the modal
const created = createModal();
console.log('Modal created:', created);
// If not created (already exists), initialize the controls
if (!created) {
initModalControls();
}
// Also initialize distance toggle
const distanceToggle = document.getElementById('distance-unit-toggle');
if (distanceToggle) {
distanceToggle.addEventListener('change', function() {
const showKm = this.checked;
// Update toggle labels
const labels = document.querySelectorAll('.toggle-label');
if (labels.length >= 2) {
labels[0].style.opacity = showKm ? '0.5' : '1';
labels[1].style.opacity = showKm ? '1' : '0.5';
}
// Update all distance displays
document.querySelectorAll('.nearby-attraction-card').forEach(card => {
const kmEl = card.querySelector('.distance-km');
const miEl = card.querySelector('.distance-mi');
if (kmEl && miEl) {
kmEl.style.display = showKm ? 'inline' : 'none';
miEl.style.display = showKm ? 'none' : 'inline';
}
});
});
}
});