PHP: function revert(id) { if(typeof(window.originals[id]) != 'undefined' && window.originals[id] !== null) document.getElementById(id).innerHTML = window.originals[id]; } function convert(id) { charsArray = { 'Q':'Й', 'W':'Ц', 'E':'У', 'R':'К', 'T':'Е', 'Y':'Н', 'U':'Г', 'I':'Ш', 'O':'Щ', 'P':'З', '[':'Х', ']':'Ъ', 'A':'Ф', 'S':'Ы', 'D':'В', 'F':'А', 'G':'П', 'H':'Р', 'J':'О', 'K':'Л', 'L':'Д', ';':'Ж', '\'':'Э', 'Z':'Я', 'X':'Ч', 'C':'С', 'V':'М', 'B':'И', 'N':'Т', 'M':'Ь', ',':'Б', '.':'Ю', '/':'.', 'q':'й', 'w':'ц', 'e':'у', 'r':'к', 't':'е', 'y':'н', 'u':'г', 'i':'ш', 'o':'щ', 'p':'з', '[':'х', ']':'ъ', 'a':'ф', 's':'ы', 'd':'в', 'f':'а', 'g':'п', 'h':'р', 'j':'о', 'k':'л', 'l':'д', ';':'ж', '\'':'э', 'z':'я', 'x':'ч', 'c':'с', 'v':'м', 'b':'и', 'n':'т', 'm':'ь', ',':'б', '.':'ю', '/':'.' }; oldText = document.getElementById(id).innerHTML; window.originals[id] = oldText; newText = ''; for(var i = 0; i < oldText.length; i++) { character = oldText.charAt(i); newText += (character in charsArray)? charsArray[character] : character; } document.getElementById(id).innerHTML = newText; } помог человеку, написал две функции: 1. convert(id) - меняет содержимое id с "cjkywt" на "солнце" 2. revert(id) - отменяет случившееся работа была кропотливая, код кроссбраузерный и компактный, поэтому выкладываю сюда, вдруг кому это сэкономит время и силы
Почему именно 61 символ? Почему бы не получить размер строки и исходя из него делать нужное количество выполнений операции замены?
Нет, замечание было верное. Будут обработаны первые 62 символа текста. Остальные останутся как есть. Наверное потому, что 80% кода - копипаст того, что было написано около двух месяцев назад. Копипаст содержит старые ошибки (в их числе вышеупомянутую), а также новые. Ну и ещё он не работает.
Тада, я вначале отпостил, а потом присмотрелся к тексту. Создатель пунтосвичера в гробу перевернётся да и порадовал комментарий - "работа была кропотливая"
как показывает практика, необходимый ажиотаж вокруг любой фигни можно поднять всего одной фразой спасибо за замечания, проверю и постараюсь исправить
про 62 исправил astrologer какие? у меня код работает без ошибок в опере 9.6, ИЕ6 (!) и ФФ 3.0.7 в чем?
1. Код без комментариев 2. Функция revert ужасно оформлена. 3. Я надеюсь ты хоть не собственноручно впечатывал этот массив?
Ну разумеется. Сейчас всё, что там происходит - определяются две функции. Имеет смысл дать ссылку на готовый пример, чтобы все могли воочию убедиться, как оно функционирует - не у всех в голове интерпретатор js. Нет, остальная часть предложения играет большую роль и вынуждает не воспринимать первую как шутку / стеб. т.е. теперь читать следует так: ? Добавь такое вот поле на страницу: Code: <input id="character" name="character"> и IE внезапно начнет фейлить
Собвственно там они только в 2х местах нужны: перед функциями А еще можно в ~6 недлинных строк весь код уложить.
строка1 = русские символы строка 2 = латиница функция 1: цикл по целевой строке: заменить букву из одного массива на соответствующую букву из другого функция 2: цикл по целевой строке: заменить букву из другого массива на соответствующую букву из одного