Javascript.RU

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

Помогите найти ошибку в скрипте.
Уважаемые знатоки, просьба не бить меня ногами так как со скриптами делов почти не имел, надо было сделать скрипт расчета мощности кондиционеров, делал по учебнику, не работает никак. В учебнике было только показано как сделать если все переменные вводятся в поле юзером, а если например надо сделать менб в котором будет выбирать несколько режимов и каждому режиму определенный параметр числовое значение, я оформил тегом
<select name="komps" onchange="calculate( );">
<option value=1>x</option>
<option value=2>y</option>

я правильно понял ано подтащит в формулу значения 1 или 2 ?


вот все что я написал
<html>
<head>
<title> JavaScript</title>
<style>

.result { font-weight: bold; } 
#payment { text-decoration: underline; }
</style>
</head>
<body>

<form name="St1Ff">
<table>
<tr><td><b>Расчет мощьности кондиционера</b></td></tr>
<tr>
<td>Площадь помещения, кв. м</td>
<td><input type="text" name="ploshad" onchange="calculate();"></td>
</tr>
<tr>
<td>Высота потолка, м</td>
<td><input type="text" name="visota" onchange="calculate( );"></td>
</tr>
<tr>
<td>Инсоляция (степень освещенности солнечными лучами)</td>
<td>
<select name="insol" onchange="calculate( );">
<option value=30>Слабая</option>
<option value=35>Средняя</option>
<option value=40>Сильная</option>
</select>

</td>
</tr>

<tr>
<td>Количество людей</td>
<td>
<select name="people" onchange="calculate( );">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>

</td>
</tr>

<tr>
<td>Количество компьютеров</td>
<td>
<select name="komps" onchange="calculate( );">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
</td>
</tr>

<tr>
<td>Количество телевизоров</td>
<td>
<select name="telek" onchange="calculate( );">
<option value=1>1</option>
<option value=2>2</option>
</td>
</tr>


<tr>
<td>Мощность остальной бытовой техники, Вт</td>
<td><input type="text" name="ostal" onchange="calculate( );"></td>
</tr>

<tr><td></td>
<td><input type="button" value="Рассчитать"
onclick="calculate( );"></td>
</tr>
<tr><td><b>Результат:</b></td></tr>
<tr>
<td>Результат:</td>
<td>$<span class="result" id="resalt"></span></td>
</tr>
</table>
</form>
<script language="JavaScript">

function calculate( ) {

var ploshad = document.St1Ff.ploshad.value;
var visota = document.St1Ff.visota.value;
var ostal = document.St1Ff.ostal.value;
var insol = document.St1Ff.insol.value;
var people = document.St1Ff.people.value;
var komps = document.St1Ff.komps.value;
var telek = document.St1Ff.telek.value;

var q1 = (ploshad*visota*insol)/(1000);
var q2 = (0,13*people);
var q3 = (0,3*komps)+(0,2*telek)+(ostal);
var result = (q1+q2+q3);

var resalt = document.getElementById("resalt");


if (isFinite(monthly)) {
resalt.innerHTML = resalt.toFixed(2);
}

else {
result.innerHTML = "";

}
}
</script>
</body>
</html>


Помогите найти ошибку. Заранее благодарностью

зы формулы расчета взял Тут и попытался сделать похожее..
Ответить с цитированием
  #2 (permalink)  
Старый 02.03.2010, 09:04
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Во первых: позакрывай selectы:
<select name="people" onchange="calculate( );">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
</select>

По коду:
Вместо подобного:
var people = document.St1Ff.people.value;

пиши:
var sel = document.St1Ff.people;
var people = sel[sel.selectedIndex].value;


Цитата:
Уважаемые знатоки
А вот за это спасибо.
Ответить с цитированием
  #3 (permalink)  
Старый 02.03.2010, 12:10
Новичок на форуме
Отправить личное сообщение для St1Ff Посмотреть профиль Найти все сообщения от St1Ff
 
Регистрация: 02.03.2010
Сообщений: 6

Спасибо за ответ, код переписал, но все равно еще не считает

<html>
<head>
<title> JavaScript</title>
<style>
.result { font-weight: bold; } #payment { text-decoration: underline; } 
</style>
</head>
<body>
<form name="St1Ff">
<table>
<tr><td><b>Расчет мощьности кондиционера</b></td></tr>
<tr>
<td>Площадь помещения, кв. м</td>
<td><input type="text" name="ploshad" onchange="calculate();"></td>
</tr>
<tr>
<td>Высота потолка, м</td>
<td><input type="text" name="visota" onchange="calculate( );"></td>
</tr>
<tr>
<td>Инсоляция (степень освещенности солнечными лучами)</td>
<td>
<select name="insol" onchange="calculate( );">
<option value=30>Слабая</option>
<option value=35>Средняя</option>
<option value=40>Сильная</option>
</select>

</td>
</tr>

<tr>
<td>Количество людей</td>
<td>
<select name="people" onchange="calculate( );">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
</select>

</td>
</tr>

<tr>
<td>Количество компьютеров</td>
<td>
<select name="komps" onchange="calculate( );">
<option value=1>1</option>
<option value=2>2</option>
<option value=3>3</option>
<option value=4>4</option>
</select>
</td>
</tr>

<tr>
<td>Количество телевизоров</td>
<td>
<select name="telek" onchange="calculate( );">
<option value=1>1</option>
<option value=2>2</option>
</select>
</td>
</tr>


<tr>
<td>Мощность остальной бытовой техники, Вт</td>
<td><input type="text" name="ostal" onchange="calculate( );"></td>
</tr>

<tr><td></td>
<td><input type="button" value="Рассчитать"
onclick="calculate( );"></td>
</tr>
<tr><td><b>Результат:</b></td></tr>
<tr>
<td>Результат:</td>
<td>$<span class="result" id="result"></span></td>
</tr>
</table>
</form>
<script language="JavaScript">

function calculate( ) {


var ploshad = document.St1Ff.ploshad.value;
var visota = document.St1Ff.visota.value;
var ostal = document.St1Ff.ostal.value;

var sel = document.St1Ff.insol;
var insol = sel[sel.selectedIndex].value;

var sel = document.St1Ff.people;
var people = sel[sel.selectedIndex].value;

var sel = document.St1Ff.komps;
var komps = sel[sel.selectedIndex].value;

var sel = document.St1Ff.telek;
var telek = sel[sel.selectedIndex].value;



var q1 = (ploshad*visota*insol)/(1000);
var q2 = (0,13*people);
var q3 = (0,3*komps)+(0,2*telek)+(ostal);
var result = (q1+q2+q3);

var result = document.getElementById("result");


if (isFinite(monthly)) {
result.innerHTML = result.toFixed(2);
}

else {
result.innerHTML = "";

}
}
</script>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 02.03.2010, 12:51
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

St1Ff,

if (isFinite(monthly)) //чему равно monthly?{
result.innerHTML = result.toFixed(2);
}

monthly не определён
Ответить с цитированием
  #5 (permalink)  
Старый 02.03.2010, 13:00
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

St1Ff,
function calculate( ) {
 
 
var ploshad = document.St1Ff.ploshad.value;
var visota = document.St1Ff.visota.value;
var ostal = document.St1Ff.ostal.value;
 
var sel = document.St1Ff.insol;
var insol = sel[sel.selectedIndex].value;
 
var sel = document.St1Ff.people;
var people = sel[sel.selectedIndex].value;
 
var sel = document.St1Ff.komps;
var komps = sel[sel.selectedIndex].value;
 
var sel = document.St1Ff.telek;
var telek = sel[sel.selectedIndex].value;
 
 
 
var q1 = (ploshad*visota*insol)/(1000);
var q2 = (0,13*people);
var q3 = (0,3*komps)+(0,2*telek)+(ostal);
var result = (q1+q2+q3);

 //Вы Ваш result переопределяли на getElementById(), конечно ничего не выведится
var resultSum = document.getElementById("result").innerHTML=result;
 
 
if (isFinite(result)) { // Вы проверяли несуществующую переменную monthly
result.innerHTML = result.toFixed(2);
}
 
else {
result.innerHTML = "";
 
}
}
Ответить с цитированием
  #6 (permalink)  
Старый 02.03.2010, 13:32
Новичок на форуме
Отправить личное сообщение для St1Ff Посмотреть профиль Найти все сообщения от St1Ff
 
Регистрация: 02.03.2010
Сообщений: 6

Спасибо Вам большое, все заработало monthly тоже заметил, исправил все равно не работало, я с образца делал, ана оттуда осталась..

Не могли бы вы еще как мастера подсказать какую нить книжку толковую и несложную в освоении, и еще вопросик, а вы все эти ошибки нашли сами, или есть какие то проги чтоб показывали где процесс оборвался и ошибку ?
Ответить с цитированием
  #7 (permalink)  
Старый 02.03.2010, 16:46
Новичок на форуме
Отправить личное сообщение для St1Ff Посмотреть профиль Найти все сообщения от St1Ff
 
Регистрация: 02.03.2010
Сообщений: 6

Еще вопрос.. Готовый результат выводится, как можно реализовать еще кусок скрипта, чтобы он брал этот результат, например 10, дальше относил его к какому то диапазону (например, легкий 1-5 кг, средний 6-10) и выводил название диапазона на экран. то есть результат выводится как цифрами так и пишется например "средний", заранее спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 02.03.2010, 17:01
Аватар для micscr
Профессор
Отправить личное сообщение для micscr Посмотреть профиль Найти все сообщения от micscr
 
Регистрация: 10.09.2009
Сообщений: 1,566

Вы просите за Вас логику реализовать.
Это работа которая обычно оплачивается.
Или постарайтесь сделать сами, а что не получится - выкладывайте код, посмотрим ...
Ответить с цитированием
  #9 (permalink)  
Старый 02.03.2010, 17:34
Новичок на форуме
Отправить личное сообщение для St1Ff Посмотреть профиль Найти все сообщения от St1Ff
 
Регистрация: 02.03.2010
Сообщений: 6

Сообщение от micscr Посмотреть сообщение
Вы просите за Вас логику реализовать.
Это работа которая обычно оплачивается.
Или постарайтесь сделать сами, а что не получится - выкладывайте код, посмотрим ...
НУ а как єто реализуется команда if ? как в нее внести диапазон значений?

if(result >= 10, <= 20) {
var result55 = 123123
}
if(result >= 21, <= 30) {
var result55 = 12fd23
}


НЕпашет ))
Ответить с цитированием
  #10 (permalink)  
Старый 02.03.2010, 18:40
Любитель
Отправить личное сообщение для JsLoveR Посмотреть профиль Найти все сообщения от JsLoveR
 
Регистрация: 16.12.2009
Сообщений: 422

St1Ff,
Я не совсем понимаю, что Вам надо, по-этому просто исправлю Ваш ужас))
var result55;
if(result >= 10&&result <= 20)
    { 
      result55 = 123123; 
    }
if(result >= 21&&result<= 30)
   {
     result55 = '12fd23'; // это строка
   }


if не команда, а конструкция

Последний раз редактировалось JsLoveR, 02.03.2010 в 18:45.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку digital_sword jQuery 2 30.11.2009 19:50
Помогите книгу найти по jQuery micscr Оффтопик 4 14.11.2009 00:42
Помогите найти trackbar dert Общие вопросы Javascript 1 28.07.2009 09:40
Помогите найти ошибку HeegCrak Общие вопросы Javascript 1 09.04.2009 01:08
Помогите найти ошибку в скрипте sdff AJAX и COMET 4 21.07.2008 19:33