Вход

Просмотр полной версии : Глобальная переменная


gyus
16.07.2013, 17:02
Здравствуйте!
Прошу помочь:

При запуске нижеприведенного кода изменения глобальной переменной а в функции fst() не "видны" в функции scd(). Т.е. кликая на "Первое слово", а затем на "Второе слово" получаенм алерты с разными значениями переменной а. Как такое может быть?

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Тест</title>
</head>
<script language="javascript">
var a=1;
function scd()
{
alert('Второе значение равно '+a);
}
function fst()
{
a++;
alert('Первое значение равно '+a);
}
</script>
<body>
<span contenteditable="true" onblur="fst();" >Первое слово</span>
<br>
<span onmousedown="scd();" >Второе слово</span>
</body>
</html>

skrudjmakdak
16.07.2013, 17:06
все правильно:
сначала увеличили на единицу
потом вывели
потом еще раз вывели

gyus
16.07.2013, 17:10
все правильно:
сначала увеличили на единицу
потом вывели
потом еще раз вывели

не понимаю.
а=а+1
выводим а=2
теперь еще раз выводим ту же переменную...
и видим a равное 1

skrudjmakdak
16.07.2013, 17:26
ааа вон как..
видимо сначала срабатывает событие onmousedown, а потом onblur

gyus
16.07.2013, 17:30
ааа вон как..
видимо сначала срабатывает событие onmousedown, а потом onblur

нет. очередность событий как-будто правильная. сначала onblur, потом onmousedown. Это видно по очередности появления алертов.

skrudjmakdak
16.07.2013, 17:34
в консоль сначала упадет onmousedown, а потом blur
<html>
<script language="javascript">
function scd()
{
console.log('onmousedown');
}
function fst()
{
console.log('blur');
}
</script>
<body>
<span contenteditable="true" onblur="fst();" >Первое слово</span>
<br>
<span onmousedown="scd();" >Второе слово</span>
</body>
</html>