Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите найти ошибку в скрипте. (https://javascript.ru/forum/misc/7990-pomogite-najjti-oshibku-v-skripte.html)

St1Ff 02.03.2010 06:20

Помогите найти ошибку в скрипте.
 
Уважаемые знатоки, просьба не бить меня ногами так как со скриптами делов почти не имел, надо было сделать скрипт расчета мощности кондиционеров, делал по учебнику, не работает никак. В учебнике было только показано как сделать если все переменные вводятся в поле юзером, а если например надо сделать менб в котором будет выбирать несколько режимов и каждому режиму определенный параметр числовое значение, я оформил тегом
<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>


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

зы формулы расчета взял Тут и попытался сделать похожее..

micscr 02.03.2010 09:04

Во первых: позакрывай 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;


Цитата:

Уважаемые знатоки
А вот за это спасибо. :)

St1Ff 02.03.2010 12:10

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

<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>

JsLoveR 02.03.2010 12:51

St1Ff,

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

monthly не определён

JsLoveR 02.03.2010 13:00

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 = "";
 
}
}

St1Ff 02.03.2010 13:32

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

Не могли бы вы еще как мастера подсказать какую нить книжку толковую и несложную в освоении, и еще вопросик, а вы все эти ошибки нашли сами, или есть какие то проги чтоб показывали где процесс оборвался и ошибку ?

St1Ff 02.03.2010 16:46

Еще вопрос.. Готовый результат выводится, как можно реализовать еще кусок скрипта, чтобы он брал этот результат, например 10, дальше относил его к какому то диапазону (например, легкий 1-5 кг, средний 6-10) и выводил название диапазона на экран. то есть результат выводится как цифрами так и пишется например "средний", заранее спасибо!

micscr 02.03.2010 17:01

Вы просите за Вас логику реализовать.
Это работа которая обычно оплачивается. :)
Или постарайтесь сделать сами, а что не получится - выкладывайте код, посмотрим ...

St1Ff 02.03.2010 17:34

Цитата:

Сообщение от micscr (Сообщение 46553)
Вы просите за Вас логику реализовать.
Это работа которая обычно оплачивается. :)
Или постарайтесь сделать сами, а что не получится - выкладывайте код, посмотрим ...

НУ а как єто реализуется команда if ? как в нее внести диапазон значений?

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


НЕпашет ))

JsLoveR 02.03.2010 18:40

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


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

JsLoveR 02.03.2010 18:51

Цитата:

Сообщение от St1Ff (Сообщение 46522)
Не могли бы вы еще как мастера подсказать какую нить книжку толковую?

http://progbook.net/javascript/1958-...e-izdanie.html
Цитата:

Сообщение от St1Ff (Сообщение 46522)
а вы все эти ошибки нашли сами, или есть какие то проги чтоб показывали где процесс оборвался и ошибку ?

monthly нашёл с помощью аддона для FF:
https://addons.mozilla.org/ru/firefox/addon/60
остальное - сам.

St1Ff 02.03.2010 19:51

Цитата:

Сообщение от JsLoveR (Сообщение 46568)
http://progbook.net/javascript/1958-...e-izdanie.html

monthly нашёл с помощью аддона для FF:
https://addons.mozilla.org/ru/firefox/addon/60
остальное - сам.

Все работает спасибо большое, єта книга у меня тоже есть я с нее делал :) Надеюсь больше проблем не возникнет. Удачи!

JsLoveR 02.03.2010 20:21

St1Ff,
Да не за что:victory:

Леон 03.04.2010 19:12

FUNCTION, или заключенный в кнопке...
 
Люди! Мне 13 лет так что строго не судите! Я собирался написать скрипт такого типа: есть кнопки(на странице) при нажатии на каждую из них выводиться функция следующего типа:
////////////////////////////////////////////////////////////////////////////////////
function *****()
{
var user_id = prompt("Введите ID пользователя: ","")
window.open('http://vkontakte.ru/*****.php?id='+user_id)
}
<input type="button" value="Фото" onClick="*****()">
////////////////////////////////////////////////////////////////////////////////////
и так несколько кнопок подряд! Как мне засунуть функцию в кнопку (орфографически правильно), и вообще, правильный ли сам синтаксис?
Если кто может, помогите! Я очч сильно туплю при создании функций, и до последней крови дерусь с синтаксисом! Заранее Спасибо!

SkyLight 03.04.2010 20:15

Ну так а что не работает-то? Или
Цитата:

Как мне засунуть функцию в кнопку
и есть единственный вопрос?
<script type="text/javascript">
function f() {
	var uid = prompt('User ID:');
	alert('User ID is ' + uid);
}
</script>
<input type="button" value="Ввести User ID" onclick="f()" />

Леон 04.04.2010 16:56

Да я уже нашел!) Кстати, хотие кто-нибудь рульный учебник по JS? От Джо Бернса?

Леон 05.04.2010 22:09

JavaScript vs Cookies
 
Я такую фигню писанул:
javascript: var a = document.cookie; alert(a);

получил куки, А расшифровать то их как???!!!


Часовой пояс GMT +3, время: 16:29.