US Sen. Lindsey Graham dies at 71 after sudden illness
Lindsey Ole Graham was born in the small town of Central South Carolina on July 9, 1955. He grew up in *** blue collar family, graduated from DW Daniel High School, and was the first in his family to go to college. But while he was at the University of South Carolina, he lost. Both parents within 15 months and was determined to raise his sister Darlene, who was just 13 at the time. Graham never forgot the impact of federal programs on his own family. If it weren’t for Social Security survivor benefits, it’s been hard to make it. My sister got Pell grants to go to college. What have I learned? That all of us are one car wreck away from needing somebody’s help. In 1981, he earned *** degree from USC Law School and served as *** JAG officer with the US Air Force, serving active duty for six years. Even after being elected to federal office, Graham continued to serve in the Air Force reserves, retiring after 33 years of service as *** colonel and always promoting *** strong national defense. As the 3rd district representative in the US House, Graham took the national stage, serving as one of the prosecutors in the impeachment trial of President Bill Clinton. God only knows what’s in his heart. I’m having to judge Bill Clinton based on evidence. In 2002, he was elected to the United States Senate, succeeding Strom Thurmond, the longest serving senator in South Carolina’s history. Senator Graham quickly filled those shoes in both constituent services and rising to become an influential voice in the Senate, easily winning three reelection bids, and in June of 2026 winning 1/5 GOP nomination with 57% of the vote. In 2015, he briefly cast his eye on higher office, proudly announcing *** run for the presidency from his hometown of Central. I’m Lindsey Graham, and I’m running for president of the United States. But the campaign was short lived. He withdrew his name before the primary. Graham realized that his power was best placed in serving the people of South Carolina through his many influential committee assignments, including judiciary, appropriations, budget, armed services, veteran. Affairs and foreign relations, but above all the committees and the foreign diplomacy, ahead of being one of President Donald Trump’s most trusted advisers, Lindsey Graham was dedicated to the betterment of his home state, always advocating for South Carolina. I think we need people to know what the hell they’re doing. And can deliver really isn’t that what it’s about having somebody in Washington that can deliver for you and your family. In his 71 years, the guy who grew up in the back of *** pool hall in central South Carolina fully lived the American dream and stood on *** platform of trying to make that dream *** reality for everyone.
Updated: 1:37 PM PDT Jul 12, 2026
Editorial Standards ⓘ
US Sen. Lindsey Graham dies at 71 after sudden illness
Updated: 1:37 PM PDT Jul 12, 2026
Editorial Standards ⓘ
Sen. Lindsey Graham, one of President Donald Trump’s closest allies in Congress who traveled the globe to advocate for a more aggressive U.S. foreign policy, has died after a “brief and sudden illness,” his office said. He was 71.The statement posted on social media early Sunday said his family “appreciates prayers at this time and asks for privacy during this incredibly difficult period.” It did not provide any additional details about the circumstances surrounding the Saturday night death of the prominent South Carolina Republican, a former Air Force lawyer who served in Congress for three decades.Trump, who talked to Graham frequently, said he was “like a member of the family. It’s very tough.” He said on NBC’s ”Meet the Press” that Graham had called him on Saturday night after returning from a trip to Ukraine and “sounded a little bit tired, but perfect.” The president ordered that flags across the country be flown at half-staff until Saturday evening.A noted hawk, Graham was one of the most influential figures in Washington on foreign affairs and he advised Trump on matters such as the Iran war and Russia. On Friday, Graham had announced an agreement with the Trump administration to move forward on a package of Russia sanctions.As chairman of the Senate Budget Committee, Graham also had a central role during Trump’s second term as Republicans pushed major legislation on party-line votes while holding a narrow 53-47 majority in the chamber.Under South Carolina law, Republican Gov. Henry McMaster will appoint a temporary replacement for Graham, who was seeking a fifth term in November. A new nominee will be selected in a special primary, which is required to be held within weeks of a vacancy. The winner of November’s general election will start a full six-year term in January.Graham had a close, complicated relationship with TrumpGraham, elected to the Senate in 2002 after serving in the House, long promoted a policy of robust U.S. military interventionism and strong national defense that in later years would put him at odds with the growing isolationist wing of his party.Over time, Graham became well-known for his close ties with Trump, whom the senator briefly ran against for the presidential nomination in 2016.Their relationship would begin on a rough note, with Graham calling the then-New York businessman “unfit for office.” Graham used a profanity to describe Trump after Trump made disparaging comments about Arizona Republican John McCain, Graham’s best friend in the Senate and a Vietnam War veteran. McCain and Graham, along with Sen. Joe Lieberman, I-Conn., were known as the “Three Amigos” and frequently traveled together to promote their foreign policy views around the globe.During a campaign rally in South Carolina, Trump read out Graham’s personal cellphone number and continued to belittle him throughout the 2016 race as Graham made it clear he would not support Trump.Graham, however, shifted significantly once Trump won the White House and emerged as one of Trump’s top allies — speaking with him frequently and becoming a regular presence on the golf course alongside the president — even as McCain remained a critic.In a 2018 interview with The Associated Press, Graham explained his pivot by saying McCain taught him that the country must move forward after elections and that meant “you have an obligation” to help the president. McCain ran twice for the White House.“And I’ve tried to be helpful where I could because I think he needs all the help he can get,” Graham said of Trump. “You can be a better critic when people understand that you’re trying to help them be successful.”Graham was a prominent defender of Trump during the president’s two first-term impeachments — a reversal from Graham’s role as a House prosecutor during Democratic President Bill Clinton’s impeachment in 1998, when he urged senators not to make up their minds before listening to all of the arguments. Both Trump and Clinton were eventually acquitted.Graham appeared to break with Trump after the Jan. 6, 2021, attack on the Capitol, saying in a dramatic speech on the Senate floor that night, “Count me out. Enough is enough.” But the senator soon returned to Trump’s side and the two remained close during Trump’s second term.Foreign policy was a focus for GrahamGraham had just been in Ukraine to meet with Ukrainian President Volodymyr Zelenskyy, who said the senator visited his country 10 times during the years since Russia invaded in February 2022. “Lindsey was a true defender of freedom and the values that make our world safer,” Zelenskyy said.He was also one of the chief backers of Trump’s war in Iran, having advocated for years for direct confrontation between Washington and Tehran. Graham continued to defend Trump this summer even as many of fellow Republicans questioned a tentative June ceasefire agreement that they worried could send billions of dollars to Iran.“I’d rather try diplomacy than take it off the table,” Graham said of Trump’s memorandum of understanding with Tehran.Graham’s travels made him a familiar face to dozens of world leaders.Israeli Prime Minister Benjamin Netanyahu said Graham understood that the security of Israel and the United States was inseparable.“Israel has lost one of its greatest friends. America has lost a great patriot. I have lost a beloved friend,” Netanyahu said.Graham led both the Senate Budget and Judiciary committeesAs Budget Committee chairman, Graham helped oversee a Senate procedure that allowed Republicans to pass significant policies such as last year’s tax law without the threat of a Democratic filibuster.He had previously led the Senate Judiciary Committee when Republicans confirmed Amy Coney Barrett to the Supreme Court in 2020. The senator was in line to regain that gavel if the party kept its majority after the midterm elections and had pledged to confirm “as many conservative judges as possible.”Graham was a key player in the Senate’s efforts to craft a massive immigration overhaul in 2013 as a member of a bipartisan group. The legislation passed the Senate with 68 votes but was never taken up by the House, so it did not become law.Graham’s views on immigration, particularly an endorsement of a path to citizenship for people in the U.S. without legal status, put him at odds with some Republican factions.Illinois Sen. Dick Durbin, a Democrat who was his ally on that issue, said Graham was “part of every important policy issue and an indispensable player” in bipartisan negotiations.An ‘irreplaceable’ force in the SenateGraham often worked across the aisle, even as he remained fiercely loyal to Trump. Virginia Sen. Mark Warner, a Democrat, said in a statement that “personal relationships often mattered more to him than the political disagreements of the day.”Sen. Richard Blumenthal, D-Conn., said Graham was “over the moon” with the Russian sanctions deal announced Friday. “The last thing in the world I would have guessed was that he was sick or ill or in any way vulnerable,” Blumenthal said.Jaime Harrison, a former national and state Democratic Party chairman who unsuccessfully ran against Graham in 2020, said that even during their “fiercest political battles” the two men “could still share a conversation, a laugh, and a mutual respect for South Carolina.”Graham was unique in the Senate for his influence not only on Trump, but also with his fellow Republicans who were aware of his ability to sometimes move the president’s thinking. He was also known for his sense of humor, often deployed to diffuse tensions.Wyoming Sen. John Barrasso, the second-ranking Republican, said Graham will be missed for his “quick wit and infectious laughter.”McMaster said in a statement that Graham was “irreplaceable.” Former Republican President George W. Bush said Graham “understood how the world works” and “was a kind and funny man who loved our country and loved serving it.”Graham often spoke about his humble roots, growing up in the back of a South Carolina bar and helping to raise his sister, Darline, after his parents died at a young age. Graham was not married and did not have children.Special election to replace Graham could be within weeksGraham won 57% of the GOP vote in South Carolina’s primary in June and was up against Democrat Annie Andrews, a pediatrician, and several minor party and independent candidates in November.His death will likely prompt a scramble to fill a rare open Senate seat.A number of Republican names began circulating as possible replacements to serve out the rest of Graham’s term, including Reps. Nancy Mace and Russell Fry.The brief statement by Graham’s office did not explain the circumstances of his death, which came at a time when there has been some concern about a lack of transparency about the health of some members of Congress.Rep. Tom Kean Jr., R-N.J., was absent without explanation for months before recently returning to Congress and disclosing he had been diagnosed with depression.Kentucky Sen. Mitch McConnell, the former longtime Republican leader, was hospitalized weeks ago for undisclosed health reasons.___Kinnard reported from Columbia, S.C. Associated Press writers Chris Megerian in Washington, Bill Barrow in Atlanta, Brian P. D. Hannon in Bangkok and Geir Moulson in Berlin contributed to this report.
WASHINGTON —
Sen. Lindsey Graham, one of President Donald Trump’s closest allies in Congress who traveled the globe to advocate for a more aggressive U.S. foreign policy, has died after a “brief and sudden illness,” his office said. He was 71
The statement posted on social media early Sunday said his family “appreciates prayers at this time and asks for privacy during this incredibly difficult period.” It did not provide any additional details about the circumstances surrounding the Saturday night death of the prominent South Carolina Republican, a former Air Force lawyer who served in Congress for three decades
Trump, who talked to Graham frequently, said he was “like a member of the family. It’s very tough.” He said on NBC’s ”Meet the Press” that Graham had called him on Saturday night after returning from a trip to Ukraine and “sounded a little bit tired, but perfect.” The president ordered that flags across the country be flown at half-staff until Saturday evening
A noted hawk, Graham was one of the most influential figures in Washington on foreign affairs and he advised Trump on matters such as the Iran war and Russia. On Friday, Graham had announced an agreement with the Trump administration to move forward on a package of Russia sanctions
As chairman of the Senate Budget Committee, Graham also had a central role during Trump’s second term as Republicans pushed major legislation on party-line votes while holding a narrow 53-47 majority in the chamber
Under South Carolina law, Republican Gov. Henry McMaster will appoint a temporary replacement for Graham, who was seeking a fifth term in November. A new nominee will be selected in a special primary, which is required to be held within weeks of a vacancy. The winner of November’s general election will start a full six-year term in January
Graham, elected to the Senate in 2002 after serving in the House, long promoted a policy of robust U.S. military interventionism and strong national defense that in later years would put him at odds with the growing isolationist wing of his party
Over time, Graham became well-known for his close ties with Trump, whom the senator briefly ran against for the presidential nomination in 2016
Their relationship would begin on a rough note, with Graham calling the then-New York businessman “unfit for office.” Graham used a profanity to describe Trump after Trump made disparaging comments about Arizona Republican John McCain, Graham’s best friend in the Senate and a Vietnam War veteran. McCain and Graham, along with Sen. Joe Lieberman, I-Conn., were known as the “Three Amigos” and frequently traveled together to promote their foreign policy views around the globe
During a campaign rally in South Carolina, Trump read out Graham’s personal cellphone number and continued to belittle him throughout the 2016 race as Graham made it clear he would not support Trump
Graham, however, shifted significantly once Trump won the White House and emerged as one of Trump’s top allies — speaking with him frequently and becoming a regular presence on the golf course alongside the president — even as McCain remained a critic
In a 2018 interview with The Associated Press, Graham explained his pivot by saying McCain taught him that the country must move forward after elections and that meant “you have an obligation” to help the president. McCain ran twice for the White House
“And I’ve tried to be helpful where I could because I think he needs all the help he can get,” Graham said of Trump. “You can be a better critic when people understand that you’re trying to help them be successful.”
Graham was a prominent defender of Trump during the president’s two first-term impeachments — a reversal from Graham’s role as a House prosecutor during Democratic President Bill Clinton’s impeachment in 1998, when he urged senators not to make up their minds before listening to all of the arguments. Both Trump and Clinton were eventually acquitted
Graham appeared to break with Trump after the Jan. 6, 2021, attack on the Capitol, saying in a dramatic speech on the Senate floor that night, “Count me out. Enough is enough.” But the senator soon returned to Trump’s side and the two remained close during Trump’s second term
Foreign policy was a focus for Graham
Graham had just been in Ukraine to meet with Ukrainian President Volodymyr Zelenskyy, who said the senator visited his country 10 times during the years since Russia invaded in February 2022. “Lindsey was a true defender of freedom and the values that make our world safer,” Zelenskyy said
He was also one of the chief backers of Trump’s war in Iran, having advocated for years for direct confrontation between Washington and Tehran. Graham continued to defend Trump this summer even as many of fellow Republicans questioned a tentative June ceasefire agreement that they worried could send billions of dollars to Iran
“I’d rather try diplomacy than take it off the table,” Graham said of Trump’s memorandum of understanding with Tehran
Graham’s travels made him a familiar face to dozens of world leaders
Israeli Prime Minister Benjamin Netanyahu said Graham understood that the security of Israel and the United States was inseparable
“Israel has lost one of its greatest friends. America has lost a great patriot. I have lost a beloved friend,” Netanyahu said
Graham led both the Senate Budget and Judiciary committees
As Budget Committee chairman, Graham helped oversee a Senate procedure that allowed Republicans to pass significant policies such as last year’s tax law without the threat of a Democratic filibuster
He had previously led the Senate Judiciary Committee when Republicans confirmed Amy Coney Barrett to the Supreme Court in 2020. The senator was in line to regain that gavel if the party kept its majority after the midterm elections and had pledged to confirm “as many conservative judges as possible.”
Graham was a key player in the Senate’s efforts to craft a massive immigration overhaul in 2013 as a member of a bipartisan group. The legislation passed the Senate with 68 votes but was never taken up by the House, so it did not become law
Graham’s views on immigration, particularly an endorsement of a path to citizenship for people in the U.S. without legal status, put him at odds with some Republican factions
Illinois Sen. Dick Durbin, a Democrat who was his ally on that issue, said Graham was “part of every important policy issue and an indispensable player” in bipartisan negotiations
An ‘irreplaceable’ force in the Senate
Graham often worked across the aisle, even as he remained fiercely loyal to Trump. Virginia Sen. Mark Warner, a Democrat, said in a statement that “personal relationships often mattered more to him than the political disagreements of the day.”
Sen. Richard Blumenthal, D-Conn., said Graham was “over the moon” with the Russian sanctions deal announced Friday. “The last thing in the world I would have guessed was that he was sick or ill or in any way vulnerable,” Blumenthal said
Jaime Harrison, a former national and state Democratic Party chairman who unsuccessfully ran against Graham in 2020, said that even during their “fiercest political battles” the two men “could still share a conversation, a laugh, and a mutual respect for South Carolina.”
Graham was unique in the Senate for his influence not only on Trump, but also with his fellow Republicans who were aware of his ability to sometimes move the president’s thinking. He was also known for his sense of humor, often deployed to diffuse tensions
Wyoming Sen. John Barrasso, the second-ranking Republican, said Graham will be missed for his “quick wit and infectious laughter.”
McMaster said in a statement that Graham was “irreplaceable.” Former Republican President George W. Bush said Graham “understood how the world works” and “was a kind and funny man who loved our country and loved serving it.”
Graham often spoke about his humble roots, growing up in the back of a South Carolina bar and helping to raise his sister, Darline, after his parents died at a young age. Graham was not married and did not have children
Special election to replace Graham could be within weeks
Graham won 57% of the GOP vote in South Carolina’s primary in June and was up against Democrat Annie Andrews, a pediatrician, and several minor party and independent candidates in November
His death will likely prompt a scramble to fill a rare open Senate seat
A number of Republican names began circulating as possible replacements to serve out the rest of Graham’s term, including Reps. Nancy Mace and Russell Fry
The brief statement by Graham’s office did not explain the circumstances of his death, which came at a time when there has been some concern about a lack of transparency about the health of some members of Congress
Rep. Tom Kean Jr., R-N.J., was absent without explanation for months before recently returning to Congress and disclosing he had been diagnosed with depression
Kentucky Sen. Mitch McConnell, the former longtime Republican leader, was hospitalized weeks ago for undisclosed health reasons
Kinnard reported from Columbia, S.C. Associated Press writers Chris Megerian in Washington, Bill Barrow in Atlanta, Brian P. D. Hannon in Bangkok and Geir Moulson in Berlin contributed to this report
Weather Information
‘
+ ‘
‘;
var gptLayer = window.gptLayer;
if (gptLayer && typeof gptLayer.insertAds === ‘function’) {
var slotsBefore = gptLayer.adSlots ? gptLayer.adSlots.length : 0;
gptLayer.insertAds();
if ((gptLayer.adSlots ? gptLayer.adSlots.length : 0) > slotsBefore) {
if (typeof gptLayer.callAdSlots === ‘function’) {
gptLayer.callAdSlots(‘imm’);
}
}
}
}
}
function closeRadarOverlay(containerId) {
var overlay = document.getElementById(containerId + ‘-radar-overlay’);
if (!overlay) return;
overlay.classList.remove(‘is-open’);
overlay.setAttribute(‘aria-hidden’, ‘true’);
document.body.classList.remove(‘weather-radar-overlay-active’);
var adSlot = overlay.querySelector(‘.weather-radar-overlay__ad-slot’);
if (adSlot) {
adSlot.innerHTML = ”;
}
}
function trackRadarOverlayInteraction(containerId) {
var now = Date.now();
var key = ‘radar_overlay_last_interaction_’ + containerId;
if (!window[key] || now – window[key] > 10000) {
window[key] = now;
dispatchWeatherGA4Event(‘radar_overlayinteraction’, ‘interaction’, containerId);
}
}
function isMobileOrTabletViewport(breakpoint = 980) {
const w = window.innerWidth || document.documentElement.clientWidth || 0;
return w < breakpoint;
}
function removeUnusedWeatherModule() {
const desktopClass = ‘sidelist-weather’;
const mobileClass = ‘mobile-weather’;
if (isMobileOrTabletViewport()) {
console.log(‘[WEATHER-BOX] Mobile/tablet viewport detected, removing desktop weather module if it exists’);
const desktopModule = document.querySelector(‘.’ + desktopClass);
if (desktopModule) {
console.log(‘[WEATHER-BOX] Removing desktop weather module’);
desktopModule.remove();
}
} else {
console.log(‘[WEATHER-BOX] Desktop viewport detected, removing mobile weather module if it exists’);
const mobileModule = document.querySelector(‘.’ + mobileClass);
if (mobileModule) {
console.log(‘[WEATHER-BOX] Removing mobile weather module’);
mobileModule.remove();
}
}
}
document.addEventListener(‘DOMContentLoaded’, function() {
removeUnusedWeatherModule();
function generateForecastItem(data) {
var ariaLabel = data.timeLabel + ‘, ‘ + data.primaryTemp + ‘ degrees, ‘ +
data.secondaryInfo + ‘ percent chance of precipitation’;
return `
`;
}
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’;
function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});
clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);
container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});
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;
}
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;
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’, ‘/alerts’);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, ‘/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;
}
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);
}
updateWeatherBackground(weatherData.current.icon_name);
}
}
function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage = ‘url(‘ + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}
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 < maxHours; i++) {
var hour = weatherData.hourly[i];
html += generateForecastItem({
timeLabel: hour.hour_display,
iconName: hour.icon_name,
primaryTemp: hour.temp_f,
secondaryInfo: hour.precip_chance + ‘%’
});
}
hourlyContainer.innerHTML = html;
}
}
if (weatherData.daily) {
var dailyContainer = container.querySelector(‘.weather-daily-forecast’);
if (dailyContainer) {
var html = ”;
var maxDays = Math.min(visibleItems, weatherData.daily.length);
for (var i = 0; i < maxDays; i++) {
var day = weatherData.daily[i];
var dayName = getShortDayName(day.day);
html += generateForecastItem({
timeLabel: dayName,
iconName: day.icon_name,
primaryTemp: day.high_f,
secondaryInfo: day.precip_chance + ‘%’
});
}
dailyContainer.innerHTML = html;
}
}
}
function getShortDayName(dayName) {
switch (dayName) {
case ‘Today’:
return ‘Today’;
case ‘Tomorrow’:
return ‘Tmrw’;
case ‘Sunday’:
return ‘Sun’;
case ‘Monday’:
return ‘Mon’;
case ‘Tuesday’:
return ‘Tue’;
case ‘Wednesday’:
return ‘Wed’;
case ‘Thursday’:
return ‘Thu’;
case ‘Friday’:
return ‘Fri’;
case ‘Saturday’:
return ‘Sat’;
default:
return dayName;
}
}
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
var isActive = tab.classList.contains(‘open’);
tab.setAttribute(‘tabindex’, ‘0’); // Both tabs focusable for VoiceOver
tab.setAttribute(‘role’, ‘tab’);
tab.setAttribute(‘aria-selected’, isActive);
tab.addEventListener(‘keydown’, function(e) {
var tabs = Array.from(container.querySelectorAll(‘[data-tab-id]’));
var currentIndex = tabs.indexOf(this);
switch(e.key) {
case ‘ArrowLeft’:
e.preventDefault();
var prevIndex = currentIndex > 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex < tabs.length – 1 ? currentIndex + 1 : 0;
tabs[nextIndex].focus();
break;
case ‘Enter’:
case ‘ ‘:
e.preventDefault();
var tabId = this.getAttribute(‘data-tab-id’);
switchWeatherTab(tabId, this);
if (tabId === ‘hourly’) {
dispatchWeatherGA4Event(‘click_hourly’, ‘click’, containerId);
} else if (tabId === ‘daily’) {
dispatchWeatherGA4Event(‘click_daily’, ‘click’, containerId);
}
break;
}
});
tab.onclick = function() {
var tabId = this.getAttribute(‘data-tab-id’);
switchWeatherTab(tabId, this);
if (tabId === ‘hourly’) {
dispatchWeatherGA4Event(‘click_hourly’, ‘click’, containerId);
} else if (tabId === ‘daily’) {
dispatchWeatherGA4Event(‘click_daily’, ‘click’, containerId);
}
return false;
};
});
loadWeatherData();
window.addEventListener(‘pageshow’, function(event) {
if (event.persisted) {
// Fix for weather radar iframe appearing gray after browser back/forward navigation
// When user navigates back, the page loads from browser cache but the iframe
// content doesn’t restore properly, showing a gray screen instead of the radar map
// This forces a fresh reload of the iframe by adding a timestamp parameter
setTimeout(function() {
refreshWeatherIframe(containerId);
}, 300);
}
});
}
document.querySelectorAll(‘.weather-sidebar’).forEach(function(weatherBox) {
initializeWeatherBox(weatherBox);
});
});
![]()

Make KCRA a preferred source on Google

