Historical Site
About This Attraction
The City Walls of Dubrovnik are one of the most prominent features of this historic Croatian city. Built primarily during the 12th to 17th centuries, these defensive stone walls stretch approximately 1.94 kilometers and offer stunning views of the Adriatic Sea. Visitors can walk along the top of the walls and explore the various towers and forts that were once used to protect the city from invaders.
For those planning a visit, its important to note the City Walls opening hours, which typically vary by season. During summer months, they are often open from morning until late afternoon, while winter hours may be shorter. A ticket is required for entry, and it is advisable to wear comfortable shoes due to uneven surfaces. The experience provides not only a glimpse into the past but also panoramic vistas of both the old town and surrounding landscapes.
Location Details
Address
Poljana Paska Miličevića, 20000 Dubrovnik, Croatia
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
35 EUR
Child
15 EUR
Student
25 EUR
Senior
35 EUR
Opening Hours & Booking
Open
Days
Daily
Hours
8:00 AM - 7:30 PM
Seasonality
Varies by season
Booking
Booking Required?
No
Nearby Attractions
Old Town in Dubrovnik is a historical area surrounded by well-preserved medieval walls. These walls…
Learn More
Lokrum Island, located just a short ferry ride from Dubrovnik, Croatia, offers visitors a peaceful…
Learn More
The Bay of Kotor is a stunning coastal region located in southwestern Montenegro. Known for…
Learn More
Kotor Old Town is a well-preserved medieval town located in Montenegro, known for its winding…
Learn More
St. Tryphon Cathedral is a significant historical site located in Kotor, Montenegro. Built in 1166,…
Learn More
The Blagaj Tekke is a historic Dervish monastery located near the town of Mostar in…
Learn More
Stari Most, also known as the Old Bridge, is a significant historical landmark in Mostar,…
Learn More
The Koski Mehmed Pasha Mosque is an important historical site located in Mostar, Bosnia and…
Learn More
The Marco Polo Museum in Korčula is dedicated to the life and travels of the…
Learn More
Korčula Old Town is a charming historic area located on the island of Korčula in…
Learn More
";
}
// 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';
}
});
});
}
});