Как правильно выполнить циклический запрос для перевода гиперссылок (JavaScript)

#javascript #web #queryselectall

Вопрос:

Привет!

Я работаю над переводом авторской гиперссылки на несколько языков.

Может ли кто-нибудь помочь мне правильно выполнить цикл querySelectAll, который переводит некоторый текст для всех элементов, собранных им, потому что он переводит только первую гиперссылку, а не их все.

 switch (pLang) {
    
    case "lv":        
        document.querySelectorAll('[title="John Davis publikācijas"]').innerHTML = "Džons Deivis";
    break;
    
    case "ru":        
        document.querySelectorAll('[title="Записи John Davis"]').innerHTML = "Джон Дэйвис";
    break;
}
 

Комментарии:

1. developer.mozilla.org/en-US/docs/Web/API/Document/… , он возвращает список элементов, которые вам нужно использовать в цикле, например, для каждого или для

Ответ №1:

Вы можете использовать a forEach для изменения всех элементов, а не только первого:

 switch (pLang)
{
    case "lv":        
        [... document.querySelectorAll('[title="John Davis publikācijas"]')].forEach((element)=>
        {
            element.innerHTML = "Džons Deivis";
        });
    break;
    
    case "ru":        
        [... document.querySelectorAll('[title="Записи John Davis"]')].forEach((element)=>
        {
            element.innerHTML = "Джон Дэйвис";
        });
    break;
}
 

Комментарии:

1. Нет необходимости в распространении на новый массив. forEach является поддерживаемым методом в списке узлов.

2. Я всегда преобразую список узлов в массивы. Я забыл, почему. @тринкот