Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вопрос по уроку "События мыши". В textarea пропадает текст. Почему? (https://javascript.ru/forum/misc/23201-vopros-po-uroku-sobytiya-myshi-v-textarea-propadaet-tekst-pochemu.html)

jsuse 15.11.2011 22:09

Вопрос по уроку "События мыши". В textarea пропадает текст. Почему?
 
У этом уроке есть такой пример http://beta.javascript.ru/tutorial/m...событий.

Что интересно. Там, при событии мыши, в textarea пишется результат. При этом каждый новый - на новой строке.

Я попробовал написать код этого примера. Но у меня почему-то предыдущая запись удаляется. В чем проблема? Вот мой код.

<input id="btn1" type="button" value="on mouse down" />
<textarea id="txt" style="height:50px; width:200px;"></textarea>

<script>
var a = document.getElementById("btn1");
a.onmousedown = function(e) {
	var d = document.getElementById("txt");
	var j = e.button;   //получаем какой кнопкой было действие
	d.value = j;
}

a.onmouseup = function(e) {
	var d = document.getElementById("txt");
	var j = e.button;
	d.value = "\n" + "which==" + j;    //вставляю пробел, текст + результат. Но стирает предыдущею строку, пишет по новой, хоть и с пробелом.
}
</script>

Aetae 15.11.2011 22:12

d.value+=
?

UDN 15.11.2011 23:43

"\n" - не пробел, а новая строка
хотя бы
http://www.snkey.net/books/webmaster...pt-syntax.html
к тому же вы присваиваете новое значение.
d.value=newValue // присвоить d.value новое значение; d.value=1; alert(d.value) // вернет 1

если хотите добавить
d.value=d.value+newValue // старое+новое значение

trikadin 15.11.2011 23:49

Цитата:

Сообщение от UDN
d.value=d.value+newValue // старое+новое значение

Вариант Aetae лучше.
d.value*!*+=*/!* newValue

Aetae 16.11.2011 01:38

Цитата:

Сообщение от trikadin (Сообщение 136796)
Вариант Aetae лучше.

Не лучше, просто компактнее.)

trikadin 16.11.2011 01:47

Цитата:

Сообщение от Aetae
Не лучше, просто компактнее.)

И быстрее.

Aetae 16.11.2011 01:54

Разве что пишется быстрее. С точки зрения языка данные операции абсолютно равнозначны.

trikadin 16.11.2011 02:02

Цитата:

Сообщение от Aetae
Разве что пишется быстрее. С точки зрения языка данные операции абсолютно равнозначны.

В js - может быть, не спорю. Но в других, как правило, нет. По той же причине, по какой ++A быстрее А= А+1 - не расходуется время на дополнительные операции извлечения числа.

9xakep 16.11.2011 16:08

Разное время таки))
<script type="text/javascript">
var a = 5;
console.time("time1")
a += 1
console.timeEnd("time1") // time1: 0ms (25µsec)
var b = 5
console.time("time2")
b = b + 1
console.timeEnd("time2") // time2: 0ms (11µsec)
</script>

Каждый раз 2ой результат был в 2 раза меньше :)

Aetae 16.11.2011 18:13

Это уже оптимизации конкретного браузера.
Проверните то же самое с произвольной большой текстовой строкой и разницы не будет.


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