Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.06.2011, 16:07
Новичок на форуме
Отправить личное сообщение для Areso Посмотреть профиль Найти все сообщения от Areso
 
Регистрация: 14.06.2011
Сообщений: 5

Ошибка в скрипте - If ... Else ... и цикл For
<script>
   function Calc()
{
   
   var priceitem = Number(document.getElementById('priceitem').value)
    
   alert (priceitem)
    
   var priceenchant = Number(document.getElementById('priceenchant').value)

   alert (priceenchant)
    
   var basicchance = Number(document.getElementById('basicchance').value)
   
   alert (basicchance)
    
   var safetyenchant = Number(document.getElementById('safetyenchant').value)
   
   alert (safetyenchant)
    
   var levelenchant = Number(document.getElementById('levelenchant').value)
   
   alert (levelenchant)
    
   var sum=0
   var sumpriceitem = 0
   
  
  if (levelenchant >= 0) and (levelenchant=<20)
    {
        if (basicchance >=1) and (basicchance=<100)
        {
            if (levelenchant > safetyenchant)
            {
                for (i=1; levelenchat-safetyenchant; i++)
		{
                sum = sum + (1 - (basicchance / 100) ^ i) * priceitem
		}
            }
            sumpriceitem = priceitem + priceenchant * levelenchant + sum
	    document.getElementById('summary').value = sumpriceitem
        }
        else
	{
        alert=("Chance of successful enchant incorrect. Please, re-enter chance of enchant from 0 to 100")
	}
    }

    else
   {
   alert=("Level of enchant incorrect. Please, re-enter level of enchant from 0 to 20")
   }
}
</script>


Код:
<textarea id="priceitem" rows="1" value="100"></textarea>
<p>
<textarea id="priceenchant" rows="1" value="5"></textarea>
<p>
<textarea id="basicchance" rows="1" value="70"></textarea>
<p>
<textarea id="safetyenchant" rows="1" value="3"></textarea>
<p>
<textarea id="levelenchant" rows="1" value="4"></textarea>
<hr>
<textarea id="summary" rows="1" readonly="1"></textarea>
     <p>
    <button onclick="Calc()">Calc</button>
И, почему-то, не вгоняет значения по умолчанию в текстовые поля.
Ответить с цитированием
  #2 (permalink)  
Старый 14.06.2011, 19:28
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Обратите внимание на синтаксис...
if ( levelenchant >= 0 && levelenchant =< 20 )
Ответить с цитированием
  #3 (permalink)  
Старый 16.06.2011, 07:52
Новичок на форуме
Отправить личное сообщение для Areso Посмотреть профиль Найти все сообщения от Areso
 
Регистрация: 14.06.2011
Сообщений: 5

<script>
       function Calc()
    {
        
       var priceitem = Number(document.getElementById('priceitem').value)
         
       alert (priceitem)
         
       var priceenchant = Number(document.getElementById('priceenchant').value)
     
       alert (priceenchant)
         
       var basicchance = Number(document.getElementById('basicchance').value)
        
       alert (basicchance)
         
       var safetyenchant = Number(document.getElementById('safetyenchant').value)
        
       alert (safetyenchant)
         
       var levelenchant = Number(document.getElementById('levelenchant').value)
        
       alert (levelenchant)
         
       var sum=0
       var sumpriceitem = 0
        
        if ((levelenchant >= 0) && (levelenchant<=20))
        {
            if ((basicchance >=1) && (basicchance<=100))
            {
            if (levelenchant > safetyenchant)
               {
                for (i=1; levelenchat-safetyenchant; i++)
                {
                sum = sum + (1 - (basicchance / 100) ^ i) * priceitem
                }
               }
            sumpriceitem = priceitem + priceenchant * levelenchant + sum
            document.getElementById('summary').value = sumpriceitem
            }
            else
            {
            alert=("Chance of successful enchant incorrect. Please, re-enter chance of enchant from 1 to 100")
            }
        }
        else
        {
        alert=("Level of enchant incorrect. Please, re-enter level of enchant from 0 to 20")
        }
    }
    </script>

К сожалению, не работает.
Ответить с цитированием
  #4 (permalink)  
Старый 16.06.2011, 10:22
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

Areso,
а как насчёт в коде поставить для начала ; ? обязательный синтаксис языка никто не отменял ещё

Последний раз редактировалось dmitriymar, 16.06.2011 в 10:26.
Ответить с цитированием
  #5 (permalink)  
Старый 16.06.2011, 10:23
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

for (i=1; levelenchat-safetyenchant; i++)

Вечный цикл
Ответить с цитированием
  #6 (permalink)  
Старый 16.06.2011, 10:35
Новичок на форуме
Отправить личное сообщение для Areso Посмотреть профиль Найти все сообщения от Areso
 
Регистрация: 14.06.2011
Сообщений: 5

Сообщение от dmitriymar Посмотреть сообщение
Areso,
а как насчёт в коде поставить для начала ; ? обязательный синтаксис языка никто не отменял ещё

"Как и во многих языках, предложения на языке javascript можно разделять точкой с запятой.

Но при переходе на новую строку в javascript точка с запятой становится необязательна, ее можно не ставить.

Эти две строки полностью эквивалентны:
a = 5
a = 5; " (С)

javascript.ru/для чайников

Сообщение от nikita.mmf
for (i=1; levelenchant-safetyenchant; i++)

Вечный цикл
for (i=1; levelenchant-safetyenchant; i++)
почему вечный? старт. значение = 1, значение окончания цикла есть, вычисляемое значение, приращение задано - раз приращение задано, цикл не может быть вечным.

UPD: нашел ошибку в переменной. Результат не изменился. Ну не вижу я ошибок, замылился глаз от постоянных переписываний и издевательств над тестовым сайтом этим несчастным кодом.

Последний раз редактировалось Areso, 16.06.2011 в 10:51.
Ответить с цитированием
  #7 (permalink)  
Старый 16.06.2011, 10:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Areso
раз приращение задано, цикл не может быть вечным
Странное высказывание... Цикл выполняется пока истино "условие", а оно тут разность двух чисел.

if (1-2) alert(1)
if (1-1) alert(2)
if (2-1) alert(3)


Если разность не будет равна нулю - цикл так и будет крутиться...

Вот что у автора

if (*!*levelenchant > safetyenchant*/!*) {
	for (i=1; levelenchat-safetyenchant; i++) {
		sum = sum + (1 - (basicchance / 100) ^ i) * priceitem
	}
}


Разность всегда больше нуля - цикл вечный.

Последний раз редактировалось ksa, 16.06.2011 в 10:57.
Ответить с цитированием
  #8 (permalink)  
Старый 16.06.2011, 11:07
Новичок на форуме
Отправить личное сообщение для Areso Посмотреть профиль Найти все сообщения от Areso
 
Регистрация: 14.06.2011
Сообщений: 5

Чего-то недопонимаю в логике конструкций.
Это же не while loop.
Здесь четко указано от какого значения и до какого...
Рабочие значения для этого цикла:
levelenchant = от 0 до 20, но как правило больше 4 и до 20 (из усл. выше). По умолчанию 4
safetyenchant = как правило, значение ровно 3.
Теперь, я инициирую цикл от 1 до (4-3) с приращением +1. Должен выполнится 1 раз.
Причем здесь условия?

Вот код этой же программы, написанной на VB6 (рабочий)

Код:
If levelenchant >= 0 And levelenchant <= 20 Then
    If chanceenchant >= 1 And chanceenchant <= 100 Then
        If levelenchant > safetyenchant Then
            For i = 1 To (levelenchant - safetyenchant)
            sum = sum + (1 - (chanceenchant / 100) ^ i) * priceitem
            Next i
        End If
        sumpriceitem = priceitem + priceenchant * levelenchant + sum
        Text6.Text = Str(sumpriceitem)
    Else
        a = MsgBox("Chance is incorrect" + Chr(13) + "Reenter chance of successful enchant, from 1 to 100", vbInformation + vbOKOnly, "Error:")
    End If
Else
    a = MsgBox("Enchant level is incorrect" + Chr(13) + "Reenter enchant level, from 0 to 20", vbInformation + vbOKOnly, "Error:")
End If
End Sub

Последний раз редактировалось Areso, 16.06.2011 в 11:22.
Ответить с цитированием
  #9 (permalink)  
Старый 16.06.2011, 11:55
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Areso
Вот код этой же программы, написанной на VB6
Ты сначала почитай как работает for на js...
http://javascript.ru/for
Ответить с цитированием
  #10 (permalink)  
Старый 16.06.2011, 12:03
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,121

Сообщение от Areso
Причем здесь условия?
Притом, что вторым параметром цикла является "условие".
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как правильно применить цикл while в этом скрипте? Дмитрий_Кирсанов Общие вопросы Javascript 5 18.01.2011 15:30
Непонятная ошибка в IE6 Servest Internet Explorer 14 10.10.2010 13:19
Ошибка в простеньком скрипте, нужна помощь Taisia Элементы интерфейса 11 07.03.2010 00:51
То-ли лыжи не едут, толи... возможно ошибка в коде. AzriMan Общие вопросы Javascript 19 18.05.2009 16:07
Синтаксическая ошибка в скрипте Rush Общие вопросы Javascript 6 18.11.2008 16:52