With its picturesque landscapes, rich history, and access to urban amenities, the Old Line State presents numerous cost-effective options for fresh retirees looking to settle down. Whether you plan to enjoy the serene shores along the Atlantic Coast or the stunning vistas of the Blue Ridge Mountains to the west, Maryland offers a variety of hidden gems that cater to those seeking affordability without sacrificing quality of life.
From charming small towns with tight-knit communities in Greensboro to vibrant environments with recreational opportunities in Snow Hill, these destinations provide the sweet spot for a fulfilling retirement experience. With access to essential services, outdoor activities, and a supportive community, here are some of the most cost-effective towns in Maryland for retirees, where they can enjoy a comfortable and enriching lifestyle amidst the state’s natural beauty and welcoming atmosphere.
Delmar
State Line Plaza in the town of Delmar, Maryland. By Ser_Amantio_di_Nicolao – Own work, CC BY-SA 3.0, Wikimedia Commons.
Smalt-town appeal and a secluded environment draw retirees to the peace that Delmar promises. This Wicomico County community offers a rural environment where everybody seems to know everybody. Residents head to Gordy Park for a serene natural setting where they can indulge in various outdoor activities, thanks to picnic tables, a playground, ball fields, and a skate park. Afterward, one can grab a bite at the delicious Old Mill Crab House.
Delmar houses several senior living communities that ensure older people never feel neglected. Different health and social programs are organized at the Delmar Manor to improve pensioners’ quality of life. Also, Delmar’s median home price is $284,000, lower than Maryland’s average of nearly $420,000.
Advertisement
Pocomoke City
View of the main street in Pocomoke City, Maryland. Editorial credit: Kosoff / Shutterstock.com
The “friendliest town on the Eastern Shore” charms senior citizens with its trademark Southern hospitality, promising peace of mind during their retirement. Pocomoke City has a rich heritage that newcomers can uncover while exploring historical markers like the Isaac Costen House Museum. This rustic mansion takes you back to the late 1800s, portraying the lives of Dr. Issac Costen and his family. A vibrant theater scene brings the community together at the Mar-Va Theater Performing Arts Center to enjoy entertaining live productions in an engrossing atmosphere with cordial people.
Pocomoke City harbors several medical facilities to address local emergencies, and residents access high-quality services from the Everest Medical Center. Meanwhile, acquiring a real estate property is an inviting prospect for incoming retirees, as the median price is $214,000.
Greensboro
A museum in Greensboro, Maryland. Editorial credit: David Podgor / Shutterstock.com
Unlike its big and busy neighbor, Baltimore, Greensboro enjoys a quieter and less crowded environment, better suited for seniors who’d appreciate peace of mind in their later years. The advantage of this proximity is that residents easily access the perks of living in the city. Outdoor recreation is readily accessible at Hidden Meadow Farm. Set against the Choptank River, this 43-acre oasis delights guests with fun horseback riding excursions along scenic nature trails. History lovers can dwell on the captivating lesson awaiting them at the Greensboro Historical Society, with interactive exhibits documenting its gradual revolution.
Greensboro has a charming community center where residents of all ages can converge for different recreational and social activities, helping to solidify bonds between residents. The Greensboro Connects Initiative focuses on mental health, family resources, and senior services in town, offering facilities like employment, outreach, and fitness for retirees. Finally, buying a home in the town costs an average of $295,000, within the reach of many fresh retirees.
Federalsburg
Scenic outdoor view of a river in Federalsburg, Maryland.
About 3,000 people call Federalsburg home, leaving enough room for incoming retirees while promising them seclusion in their golden years. Even better, the local average housing price is $226,000, making it one of the most cost-effective towns in Maryland for retirees. An extensive wilderness area surrounds the town, highlighted by the 3,800 acres of the Idylwild Natural Area. Housing a blend of forests, open fields, and wetlands, it welcomes adventurers to fish, hike, camp, and hunt whenever they crave outdoor recreation.
New residents who want to know about their adopted home better can start at the Federalsburg Historical Society. The venue has a small yet insightful artifact collection that will acclimatize them to the region’s earlier years. Elsewhere, ailing pensioners can seek medical attention at TidalHealth Primary Care.
Hancock
A bank office building in the town of Hancock, Maryland. Editorial credit: Alejandro Guzmani / Shutterstock.com
Hancock perfectly balances affordability, small-town charm, and a tight-knit community, proving itself a compelling contender for the best retirement hub in Maryland. Retirees will enjoy strolls through the quaint downtown, where locally owned businesses like Blue Goose Fruit Market and Bakery entice passers-by with sweet aromas and flavors, compelling them to indulge in savory chocolates and cookies. A bustling restaurant scene provides a delectable dining experience in Hancock, and pensioners can enjoy luscious seafood at Jimmy Joy’s Log Cabin Inn.
Hancock houses the Tri-State Community Health Center as the primary healthcare provider. Seniors can benefit from reliable services without needing to leave town. Finally, the median home price here is $232,000.
Crisfield
A home along Main Street in Crisfield, Maryland. Editorial credit: Alexanderstock23 / Shutterstock.com
Located on the shores of the expansive Chesapeake Bay, Crisfield welcomes new pensioners who want to enjoy its picturesque coastal scenery and relaxed atmosphere. The surrounding waters beckon residents to take it easy with low-key excursions at Somers Cove Marina, where they can charter a vessel. Tangier Island Cruises takes people on exciting tours on the water to neighboring destinations like Tangier Island. Back in town, retirees can get cultured at the Crisfield Arts and Entertainment District, which harbors a family of creatives, from musicians to artists.
Crisfield has TidalHealth McCready Pavilion to address local medical needs, while Alice B. Tawes Nursing and Rehabilitation Center ensures pensioners are appropriately cared for in their vulnerable years. The average price of a home in Crisfield is $151,000, making it one of the most affordable towns on this list.
Advertisement
Frostburg
The Western Maryland Railroad in Frostburg, Maryland. Editorial credit: Malachi Jacobs / Shutterstock.com
Steeped in historical heritage, Frostburg emerged in the 1800s and took incoming retirees on a surreal journey through time at its different historical markers. One such venue is the Thrasher Carriage Museum, which houses a quirky collection of vintage horse-drawn vehicles offering an idea of transportation from earlier days. Another exciting stop for history enthusiasts, the Frostburg Museum focuses on the broader city’s heritage, chronicling events since its founding through interesting exhibits.
The lively local arts community entertains townsfolk with moving performances at the Frostburg Palace Theatre, from musicals to comedies and plays. Frostburg also harbors a welcoming Community Center where seniors can find useful programs at the Frostburg Senior Center. Lastly, the average housing price is $167,000, less than half of the United States average.
Hurlock
Crab statue in a restaurant in Hurlock, Maryland. Editorial credit: Dee Dalasio / Shutterstock.com
Buying a home in Hurlock costs an average of $256,000, offering retirees a relatively affordable option in Maryland. The town is well-connected, located just 60 miles from Annapolis, and benefits from proximity to major highways, ensuring easy access to urban amenities. The town’s historic charm is evident in landmarks like the Hurlock Branch Library, one of the state’s oldest libraries, which serves as a hub for learning and local events.
Hurlock fosters a tight-knit community through its festivals and events, such as the annual Hurlock Fall Festival, which features fun activities and a warm, welcoming atmosphere. Downtown Hurlock is perfect for socializing, with friendly spots like Mom-n-Pop’s offering delicious homemade meals in a cozy setting. Furthermore, those looking for daily supplies in town can access various businesses on Main Street, such as Collins Wood Products.
Snow Hill
Bates Memorial United Methodist Church in Snow Hill, Maryland. Editorial credit: Anthony Frisina / Shutterstock.com
Snow Hill boasts a tranquil setting along the Pocomoke River, with an average home price of $276,000, making it a budget-friendly option for retirees. Its scenic location offers retirees stunning water views and outdoor adventures at Pocomoke River State Park, where they can enjoy fishing, boating, birding, and more across 14,000 acres of wilderness. Additionally, Snow Hill provides reliable healthcare services through Tidal Health Medical Center, which offers outpatient, rehabilitation, and mental health support.
For those seeking cultural experiences, the Julia A. Purnell Museum takes visitors on a nostalgic journey through the history of Maryland’s Eastern Shore with exhibits spanning the 16th to 20th centuries. On the other hand, seniors can grab a bite with friends at Elliott’s Tavern, a quaint spot known for its rustic vibe.
Final Thoughts
Maryland has many cost-effective towns that provide retirees with a perfect blend of affordability, charm, and community spirit. Whether you want to settle in Rock Hall and revel in its picturesque waterfront and thriving arts scene or start a new chapter in Crisfield to enjoy the “Seafood Capital of the World,” these towns in Maryland for retirees exemplify the enriching experiences available in the Old Line State, ensuring they can find a welcoming and affordable place to call home while embracing the joys of their golden years.
A deadly crash involving a motorcycle shut down a stretch of Connecticut Avenue in Chevy Chase, Maryland, early Tuesday.
A deadly crash involving a motorcycle shut down a stretch of Connecticut Avenue in Chevy Chase, Maryland, early Tuesday.
Montgomery County police said officers responded around 6:15 a.m. to a report of a crash involving a car and a motorcycle at Manor Road and Connecticut Avenue.
A motorcyclist was found in serious condition. Police said the man died at the scene.
Advertisement
A woman driving the car was hospitalized with minor injuries.
Connecticut Avenue is closed in both directions between Jones Bridge Road and Manor Road as police investigate the collision.
The crash is the latest in a series of deadly motorcycle incidents across Maryland, including a deadly hit-and-run in Charles County that left one man dead Saturday.
A map of the area is below.
CLICK MAP FOR THE LATEST ROAD CONDITIONS FROM THE WTOP TRAFFIC CENTER: Map shows closure of Connecticut Avenue in both directions, south of Interstate 495 in Chevy Chase, Md.
Get breaking news and daily headlines delivered to your email inbox by signing up here.
MARYLAND (WBFF) — Maryland lawmakers have approved a bill that would end the automatic charging of certain juveniles as adults and is now on its way to the governor’s office for review.
The Youth Charging Reform Act passed the House of Delegates on Monday after clearing the Senate last week. The bill aims to end the automatic charging of 16- and 17-year-olds as adults for certain drug, assault, and gun offenses.
ALSO READ | Bill to end automatic charging of some juveniles as adults inches closer to passage
The bill drew significant opposition from several top prosecutors in Maryland, including Baltimore City State’s Attorney Ivan Bates, Prince George’s County State’s Attorney Tara Jackson, Montgomery County State’s Attorney John McCarthy, and Anne Arundel County State’s Attorney Anne Colt Leitess.
Advertisement
For months, they’ve warned that the change could weaken accountability and pose public safety risks.
“DJS is not equipped to deal with these increased violent offenders, and the legislature should defer the implementation of this bill until the programs are in place,” McCarthy said.
Maryland sheriffs also joined the pushback, including Carroll County Sheriff Jim Dewees, who previously said, “This is not a smart move, by any means, I don’t like it because, and I think by and large, law enforcement doesn’t like it, because we don’t have a whole lot of trust in the juvenile court system and the DJS system.”
ALSO READ | FOX45 sends video of prosecutors’ concerns to lawmakers backing juvenile justice bill
Supporters of the bill argued that most cases end up in the juvenile system regardless, and therefore, it makes sense to start them in the Department of Juvenile Services.
Advertisement
“They’re already ingesting that work anyway; they’re already doing that workload anyway,” Sen. Will Smith, lead sponsor of the legislation, previously told FOX45 News. “We’re just wasting time and money by sending them to the adult system first.”
JOIN THE CONVERSATION (6)
The bill now awaits at Gov. Wes Moore’s desk for a final decision.
Baltimore-Washington Parkway, exit ramps to close in Jessup for bridge replacement
Updated: 10:31 AM EDT Apr 6, 2026
Editorial Standards ⓘ
Advertisement
A portion of the Baltimore-Washington Parkway will close for two weekends in Jessup, where a bridge will be demolished.Check our LIVE traffic map and cameras in the WBAL-TV 11 News appThe Maryland State Highway Administration said Maryland Route 295 ramps will close, weather permitting, at Maryland Route 175 for an interchange reconstruction project.Southbound MD 295 will close between Maryland Routes 100 and 32 starting at 10 p.m. on April 10 until 5 a.m. on April 13 with the following lane and ramp closures.Both ramps from MD 100 onto southbound MD 295.Both ramps from Arundel Mills Boulevard onto southbound MD 295.Southbound MD 295 ramp to eastbound and westbound MD 175.Westbound MD 175 ramp to southbound MD 295.Northbound MD 295 will close between Maryland Routes 32 and 100 starting at 10 p.m. on April 17 until 5 a.m. on April 20 with the following ramp closures.Both ramps from MD 32 onto northbound MD 295.Eastbound MD 175 ramp to northbound MD 295.Northbound MD 295 ramp to eastbound and westbound MD 175.The mainline MD 175 lanes on the new bridge will remain open to traffic. The SHA said signs will be posted for detours to include MD 100, Interstate 95 and MD 32. Those going to Baltimore-Washington International Thurgood Marshall Airport are advised to use alternate north-south routes such as I-95, U.S. Route 1 or I-97 to reach I-195.The overall interchange reconstruction project completion is scheduled for Fall 2027, schedule and weather permitting.
JESSUP, Md. —
A portion of the Baltimore-Washington Parkway will close for two weekends in Jessup, where a bridge will be demolished.
Advertisement
The Maryland State Highway Administration said Maryland Route 295 ramps will close, weather permitting, at Maryland Route 175 for an interchange reconstruction project.
Southbound MD 295 will close between Maryland Routes 100 and 32 starting at 10 p.m. on April 10 until 5 a.m. on April 13 with the following lane and ramp closures.
Both ramps from MD 100 onto southbound MD 295.
Both ramps from Arundel Mills Boulevard onto southbound MD 295.
Southbound MD 295 ramp to eastbound and westbound MD 175.
Westbound MD 175 ramp to southbound MD 295.
Northbound MD 295 will close between Maryland Routes 32 and 100 starting at 10 p.m. on April 17 until 5 a.m. on April 20 with the following ramp closures.
Both ramps from MD 32 onto northbound MD 295.
Eastbound MD 175 ramp to northbound MD 295.
Northbound MD 295 ramp to eastbound and westbound MD 175.
The mainline MD 175 lanes on the new bridge will remain open to traffic.
The SHA said signs will be posted for detours to include MD 100, Interstate 95 and MD 32.
Advertisement
Those going to Baltimore-Washington International Thurgood Marshall Airport are advised to use alternate north-south routes such as I-95, U.S. Route 1 or I-97 to reach I-195.
The overall interchange reconstruction project completion is scheduled for Fall 2027, schedule and weather permitting.
Advertisement
`;
}
function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}
function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;
Advertisement
function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});
var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}
function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}
Advertisement
var location = { zip: window.DEFAULT_ZIPCODE };
try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}
var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;
if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}
function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;
Advertisement
var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);
if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.wbaltv.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.wbaltv.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}
function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;
var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}
var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}
Advertisement
var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}
var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}
var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}
function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;
if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);
for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex
`;
}
function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}
Advertisement
function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;
function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});
var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}
Advertisement
function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}
var location = { zip: window.DEFAULT_ZIPCODE };
try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}
var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;
if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}
Advertisement
function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;
var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);
if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.wbaltv.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.wbaltv.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}
function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;
var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}
Advertisement
var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}
var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}
var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}
var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}
function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;
if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);
for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex