Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Метод replace (https://javascript.ru/forum/misc/21554-metod-replace.html)

9xakep 14.09.2011 20:41

Метод replace
 
<textarea id='area1'>
123
</textarea>
<input type='button' value='change' onclick='iprov()'>
<script>
function iprov() {
 var a = document.getElementById('area1').value
var str = a.charAt(0)
var  b = str.replace(1, 2)
document.getElementById('area1').value = b
}
</script>

Подскажите в чем дело?

Sweet 14.09.2011 21:15

Метод .replace не изменяет строку, а возвращает новую.

9xakep 14.09.2011 21:22

Изменил код,который выше.Сложился такой вопрос:почему когда пишешь
document.getElementById('area1').value= b

то все работает
а когда так:
document.getElementById('area1').value.charAt(0) = b

То не работает :?

Sweet 14.09.2011 21:42

Потому что метод .charAt возвращает новую строку.

9xakep 14.09.2011 21:48

Я вас не понимаю, вы не могли бы более понятнее объяснить, а не короткими фразами?

DjDiablo 14.09.2011 22:03

Метод charAt только возвращает но нечего не устанавливает ))

9xakep 14.09.2011 22:15

а...то есть мы получаем значение, но обратно передать(изменить) его не можем.Тогда какие есть способы чтобы взять и изменить?

Sweet 14.09.2011 22:30

Использовать другой язык, где это возможно.

DjDiablo 15.09.2011 02:33

Вот здесь даже я нечё непонял ))))))))
Причём тут другой язык ?

предлагаешь
Контент по китайски, или скрипты на бейсике ? )))))))))

melky 15.09.2011 09:02

Цитата:

Сообщение от 9xakep (Сообщение 126509)
а...то есть мы получаем значение, но обратно передать(изменить) его не можем.Тогда какие есть способы чтобы взять и изменить?

почему? можем. что такое "обратно передать" ? может, "установить новое" значение?

9xakep 15.09.2011 10:26

да, я это и имел ввиду

Виктор Кон 15.09.2011 12:16

Я заменил вот эти две строки

var
document.getElementById('area1').value= b

на одну

document.getElementById('area1').value= ""+b

и все отлично работает

Виктор Кон 15.09.2011 12:44

А еще вот так можно исправить
var b = str.replace("1", "2")

9xakep 15.09.2011 16:28

var это я случайно написал,этот скрипт у меня работает, посмотрите посты выше, мне нужно взять одну цифру и изменить ее.

Sweet 15.09.2011 17:03

Я так смотрю, начался диалог "хакера" и "хакера":)

9xakep 15.09.2011 17:36

конечно =) Диолог был бы более содержательным если бы вы подсказали хотя бы в какую сторону идти?Или это вообще не возможно,вытащить один символ изменить и передать его обратно?

Виктор Кон 15.09.2011 17:44

Так вы даже задачу не сформулировали. Символ вы вытащили, изменить можно, почему бы нет, но вы меняете один символ, притом неправильно, в replace надо ставить либо регулярное выражение, либо строку. А обратно возвращаете один измененный символ. Хотите всю исходную строку с измененным символом, тоже ведь несложно, только напишите четко - что же вы хотите.

Sweet 15.09.2011 18:00

function replaceChar(string, position, newValue){
  return string.replace( new RegExp( "(.{" + position + "}).(.+)", "m" ) , "$1" + newValue + "$2" );
};

var test = "aac";
test = replaceChar( test, 1, "b" );
alert( test );

9xakep 15.09.2011 18:01

хорошо...вот что мне нужно:
из поля 123 взять "1",и изменить ее например на "2".

9xakep 15.09.2011 18:03

Sweet,спасибо большое!

9xakep 17.09.2011 20:15

Меня тут не было денёк, и я все-таки решил не просто скопировать скрипт, а понять =) И возникло несколько вопросов:
Зачем нужны выделенные символы?
new RegExp( "(.{" + position + "}).(.+)", "m" ) , "$1" + newValue + "$2" )
P.S. с регулярными выражениями первый раз сталкиваюсь.

Виктор Кон 17.09.2011 20:44

Так на этом сайте есть справочник и есть учебник. Вот и почитайте. Зачем же персонально вам все переписывать.

9xakep 17.09.2011 21:18

Я бы не стал обращаться если бы не читал.Но во всей таблицы не нашел зачем и когда нужны эти кавычки, зачем нужно писать по несколько раз точки, и зачем нужна эта буква "m".
Я написал что сталкиваюсь с этим первый раз, и для меня это просто набор символов, т.ч. прошу без критики


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