Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Неккорректно работает ф-ция

4.9K
15 апреля 2010 года
Dimonya
11 / / 06.02.2007
Есть ф-ция:function Str()
{
var count;
var count1;
var sum;
count=rand(1,6);
count1=rand(1,6);
sum=count+count1;
alert("MyStr до начал работы ф-ции="+MyStr);
switch(sum)
{
case 2 : MyStr=22;
case 3 : MyStr=20;
case 4 : MyStr=16;
case 5 : MyStr=18;
case 6 : MyStr=20;
case 7 : MyStr=20;
case 8 : MyStr=16;
case 9 : MyStr=24;
case 10: MyStr=22;
case 11: MyStr=18;
case 12: MyStr=20;
}
alert("Первый кубик=" +count+ "/nВторой кубик="+ count1+ "MyStr после switch ="+MyStr );

}

При ее вызове с html-страницы:
<form action="null">
<input type="button" onclick="Str()" value="Сила"/>
</form>
<SCRIPT language="javascript" type="text/javascript">
document.writeln("<p>"+"Сила: "+ MyStr+"<BR />");
alert("MyStr="+MyStr);
</SCRIPT>
1.
переменная MyStr устанавливается в значение 20 и не меняется в зависимости от переменной sum.
2.
на html-странице вообще не видит изменения переменной, т.е последний alert пишет: MyStr=undefined...
Помогите решить проблему,сам я новичек....
563
15 апреля 2010 года
MrLinker
249 / / 17.09.2006
break творит чудеса... ояторчу...

[COLOR="Red"]UPD[/COLOR]
По пункту 2.
Для того чтобы работало, MyStr нужно объявить вне функции. Перед ней, например.

На вашем месте, я бы чуть укоротил код:
[HTML]<script type="text/javascript">
var MyStr;
var m = new Array(0, 0, 22, 20, 16, 18, 20, 20, 16, 24, 22, 18, 20);

function Str()
{
var count = rand(1,6);
var count1 = rand(1,6);
var sum = count + count1;

alert("MyStr до начал работы ф-ции="+MyStr);
MyStr = m[sum];
alert("Первый кубик=" +count+ "/nВторой кубик="+ count1+ "MyStr после switch ="+MyStr );
}
</script>[/HTML]
В конечном счете, если не важно знать, что выпало на кубиках по отдельности, можно так:
[HTML]<script type="text/javascript">
var m = new Array(22, 20, 16, 18, 20, 20, 16, 24, 22, 18, 20);
function Str()
{
MyStr = m[rand(0, 10)];
}
</script>[/HTML]
Также советую выбирать более современную литературу по языку, чтобы не переучиваться потом заново.
366
16 апреля 2010 года
int
668 / / 30.03.2005
В case нету break, поэтому и 20
4.9K
16 апреля 2010 года
Dimonya
11 / / 06.02.2007
MyStr объявлена в глобальной области.Спасибо большое за оптимизацию кода).А какие книги Вы порекомендуете?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог