Надо указать путь до файла от корня сервера. Скорее всего, у вас во фреймворке или cms есть функция или константа, в которой содержится всё, что идёт до /assets
Это лично. Это только у вас. Это локально. Это на том компьютере, где вы пытаетесь его открыть.
Это тот сайт, который "не позволяет установить соединение".
Гуглите рекурсивный обход дерева - именно это ваша задача. Но как вы будете понимать, что в каком-то месте нужно заменить текст, а где-то не нужно и на какой именно заменять, я ума не приложу.
Да, естественно, ваша задача будет решаться через HTMLCollection или NodeList, потому что именно в этих структурах содержатся дочерние элементы. По сути, вам нужно в childNodes искать текстовые узлы и работать только с ними.
У вас в коде нет «первого форич». В console.log в начале вы выводите содержимое элемента, включая дочерние. Там сохраняются переносы строк, поэтому вам кажется, что лог вывелся несколько раз.