National Park
About This Attraction
Penang National Park, located in Malaysia, is known for its rich biodiversity and offers visitors a chance to experience diverse natural landscapes. The park features various ecosystems, including mangroves, rainforests, and coral reefs, which provide habitat for many species of flora and fauna. Visitors can enjoy well-marked trails that lead to scenic spots such as the Meromictic Lake and the historic Cape Rachado Lighthouse. For those interested in wildlife, the park is home to over 150 species of birds, making it a popular destination for birdwatching.
In addition to hiking and observing wildlife, Penang National Park offers activities like canopy walks and boat rides. These activities allow visitors to explore different parts of the park from unique vantage points. Before planning a visit, its important to check the Penang National Park opening hours to ensure you have ample time to enjoy the attractions. The park provides facilities such as rest areas and information centers to enhance your visit. With its variety of natural features and activities, this park is a destination that appeals to outdoor enthusiasts of all ages.
Location Details
Address
Jalan Hassan Abas, Teluk Bahang, 11050 Penang, Malaysia
Visitor Information
Pricing & Ratings
Ticket Prices
Adult
Free
Child
Free
Student
Free
Senior
Free
Opening Hours & Booking
Open
Days
Daily
Hours
7:30 AM - 6:00 PM
Seasonality
Year-round
Booking
Booking Required?
No
Nearby Attractions
Batu Ferringhi Beach is a popular tourist destination on the northern coast of Penang Island,…
Learn More
Penang Hill, located in the Malaysian state of Penang, is a popular tourist destination known…
Learn More
Kek Lok Si Temple, located in Penang, Malaysia, is one of the largest and most…
Learn More
George Town, the capital of Penang Island in Malaysia, is a UNESCO World Heritage site…
Learn More
The Perak Museum in Taiping is the oldest museum in Malaysia, established in 1883. It…
Learn More
Taiping Zoo, located in Taiping, Malaysia, is one of the oldest zoos in the country,…
Learn More
Taiping Lake Gardens, located in the town of Taiping in Perak, Malaysia, is one of…
Learn More
Pantai Cenang is a popular beach destination located on the island of Langkawi, Malaysia. Known…
Learn More
Kilim Geoforest Park in Langkawi is known for its unique geological formations and rich biodiversity.…
Learn More
The Langkawi Sky Bridge is a remarkable curved pedestrian bridge located in Langkawi, Malaysia. It…
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';
}
});
});
}
});