Ошибка в скрипте - 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> |
Обратите внимание на синтаксис...
if ( levelenchant >= 0 && levelenchant =< 20 ) |
<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>
К сожалению, не работает. |
Areso,
а как насчёт в коде поставить для начала ; ? обязательный синтаксис языка никто не отменял ещё |
for (i=1; levelenchat-safetyenchant; i++) Вечный цикл |
Цитата:
"Как и во многих языках, предложения на языке javascript можно разделять точкой с запятой. Но при переходе на новую строку в javascript точка с запятой становится необязательна, ее можно не ставить. Эти две строки полностью эквивалентны: a = 5 a = 5; " (С) javascript.ru/для чайников Цитата:
почему вечный? старт. значение = 1, значение окончания цикла есть, вычисляемое значение, приращение задано - раз приращение задано, цикл не может быть вечным. UPD: нашел ошибку в переменной. Результат не изменился. Ну не вижу я ошибок, замылился глаз от постоянных переписываний и издевательств над тестовым сайтом этим несчастным кодом. |
Цитата:
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
}
}
Разность всегда больше нуля - цикл вечный. |
Чего-то недопонимаю в логике конструкций.
Это же не while loop. Здесь четко указано от какого значения и до какого... Рабочие значения для этого цикла: levelenchant = от 0 до 20, но как правило больше 4 и до 20 (из усл. выше). По умолчанию 4 safetyenchant = как правило, значение ровно 3. Теперь, я инициирую цикл от 1 до (4-3) с приращением +1. Должен выполнится 1 раз. Причем здесь условия? Вот код этой же программы, написанной на VB6 (рабочий) Код:
If levelenchant >= 0 And levelenchant <= 20 Then |
Цитата:
http://javascript.ru/for |
Цитата:
|
Спасибо, думаю теперь дело пойдет на лад :)
|
Цитата:
судя по вашим сообщениям- вы не настолько знаете и понимаете язык чтобы это использовать |
| Часовой пояс GMT +3, время: 00:34. |