в
как в document.body.innerHTML менять только атрибут img src

о
использование document.body.innerHTML для редактирования всего кода страницы приводит к полной перезагрузке DOM, удалению событий и сбросу состояния элементов. Чтобы изменить только атрибут src у картинок (img), лучше использовать методы поиска элементов (DOM API). [1] 

1. Если нужно изменить src у определенной картинки

Лучше обращаться к конкретному элементу (например, через номер). [2, 3] 

// Находим картинку и меняем её src
document.getElementById('my-image').src = 'new-image.jpg'; 

2. Если нужно изменить src ВСЕХ картинок на странице

Используйте querySelectorAll и метод .forEach() для перебора коллекции элементов.

// Находим все теги <img> и обновляем путь document.querySelectorAll('img').forEach(img => { img.src = 'new-image-for-all.jpg'; }); 

3. Замена с помощью регулярного выражения (альтернатива для innerHTML)

Если вы работаете именно со строкой разметки, можно распарсить текущий HTML, найти атрибуты регулярным выражением и вернуть обратно.

// Получаем HTML-код
let bodyHtml = document.body.innerHTML;
// Заменяем все пути к изображениям с помощью метода replace
// Находит src="старый_путь" и меняет на src="новый_путь"
bodyHtml = bodyHtml.replace(/src="[^"]*"/gi, 'src="new-image.jpg"');
// Записываем обратно document.body.innerHTML = bodyHtml; 

(При использовании метода из пункта 3 также сбрасываются обработчики событий, как и при прямом изменении innerHTML). [1, 4] 

Если у вас есть конкретная задача, расскажите:

Сколько всего картинок на странице?
Нужно ли заменить все src на один новый или у каждой должен быть свой уникальный адрес?