Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена значений полей elem.innerHTML.replace (https://javascript.ru/forum/misc/78982-zamena-znachenijj-polejj-elem-innerhtml-replace.html)

biffick 02.12.2019 01:15

Замена значений полей elem.innerHTML.replace
 
Всем привет.

Никак не выходит заменить выражения с английского на русский в таблице.

Заменяется только 'Name' на 'Название', а следующие поля остаются на английском.

Требуется помощь в решении данного вопроса :)

<table id="indexlist">

	<tr class="indexhead">
		<th class="indexcolicon">
			<img src="/listing/.styles/icons/blank.svg" />
		</th>
		<th class="indexcolname">
			<a href="?C=N;O=D">Name</a>
		</th>
		<th class="indexcolsize">
			<a href="?C=S;O=A">Size</a>
		</th>
		<th class="indexcoldesc">
			<a href="?C=D;O=A">Description</a>
		</th>
	</tr>

	<tr class="even">
		<td class="indexcolicon">
			<img src="/listing/.styles/icons/folder-home.svg" />
		</td>
		<td class="indexcolname">
			<a href="/">Parent Directory</a>
		</td>
		<td class="indexcolsize">
			-
		</td>
		<td class="indexcoldesc">
			<span class='description'>↑ Наверх</span>
		</td>
	</tr>
   
</table>


elem = document.getElementsByClassName ('th.indexcolname') [0];
elem.innerHTML = elem.innerHTML.replace ('Name', 'Название');
elem = document.getElementsByClassName ('th.indexcolsize') [0];
elem.innerHTML = elem.innerHTML.replace ('Size', 'Размер');
elem = document.getElementsByClassName ('th.indexcoldesc') [0];
elem.innerHTML = elem.innerHTML.replace ('Description', 'Описание');
elem = document.getElementsByClassName ('indexcolname') [0];
elem.innerHTML = elem.innerHTML.replace ('Parent Directory', 'Наверх');


В данном коде указал th. с классами потому, что требуются замены именно на th-полях, чтобы случайно не произошло замены данных выражений в столбцах td.
К сожалению изменить выражения в самой таблице не представляется возможным, потому что она формируется модулем апача, а именно mod_autoindex

laimas 02.12.2019 04:06

Чье это, почему не заменить руками в исходнике, почему скриптом меняется?

Если скрипт, то в TH:
var reply = ['Название', 'Размер', 'Описание'];
document.querySelectorAll('#indexlist th a').forEach(function(e, i) {
    e.textContent = reply[i]    
});


А Parent Directory, это в одной строке таблицы или их много?

biffick 02.12.2019 04:54

Вложений: 1
laimas, доброй ночи. Поменять это в исходнике не выйдет, потому что эта таблица формируется модулем апача mod_autoindex, это листинг файлов. В модуле жёстко забиты значения ячеек...

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

Parent Directory находится в ячейке TD и используется один раз, эта ссылка ведёт на каталог выше.
Беда в том, что нужно как-то перевести только это значение.
Т.е. чтобы если вдруг в листинге появится файл, содержащий в своём названии 'Parent Directory', то оно не перевелось...

Скрин приложил

UPD: ваш код работает, заменилось всё, как нужно. Осталось разобраться с 'Parent Directory' :-)

laimas 02.12.2019 05:11

Ясно.

document.querySelector('tr.even a').textContent = 'Наверх';

biffick 02.12.2019 05:17

laimas, большое спасибо, всё работает, как нужно. Плюс в карму кинул :-)


Часовой пояс GMT +3, время: 13:58.