Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: помогите со скриптом
 
 автор: garik1990   (16.09.2010 в 14:16)   письмо автору
 
 

необходимо создать форму, для вычисления площади трапеции. Площадь вычисляется в результате изменения данных в последнем текстовом поле. заранее спасибо.

  Ответить  
 
 автор: АЯ   (16.09.2010 в 14:32)   письмо автору
 
   для: garik1990   (16.09.2010 в 14:16)
 

Для вычисления площади трапеции необходимо знать ТРИ её характеристики: длина верхнего основания, длина нижнего основания, высота.

Вопросы:
1. У Вас ТРИ поля для ввода данных?
2. Пользователь может ввести данные в эти ТРИ поля в произвольном порядке?
3. Пользователь вводит данные ТОЛЬКО с помощью клавиатуры (или же может воспользоваться мышью методом Copy-Paste)?
4. Где следует выводить результат? И с каким количеством знаков после запятой?

  Ответить  
 
 автор: garik1990   (16.09.2010 в 14:39)   письмо автору
 
   для: АЯ   (16.09.2010 в 14:32)
 

1) да три поля. a и b — основания и h — высота. формула . (a+b)*h и все это делить на два.
2) по порядку вводить. после ввода в третье долже быть ответ
3) только с клавиатуры.
4)выводить в окошке типа text. три знака после запятой

  Ответить  
 
 автор: АЯ   (16.09.2010 в 17:33)   письмо автору
 
   для: garik1990   (16.09.2010 в 14:39)
 

<script>
function mF ()
{
for (var p = ['A', 'B', 'H'], f = [], k = j = 0, lj = p.length; j < lj; j++)
   {
   var s = document.forms.myFRM ['x' + p [j]].value;
   if (s.length && s * 1 == s && s * 1 > 0) {f [j] = s * 1; k++}
   }
document.forms.myFRM ['rS'].value = (k == 3) ? (((f [0] + f [1]) * f [2] / 2).toFixed (3)) : '';
}
</script>

<form name="myFRM">
<ul style="float: left; list-style-type: none; text-align: right">
<li>Длина нижнего основания:</li>
<li>Длина верхнего основания:</li>
<li>Высота:</li>
<li style="text-align: right; margin-top: 8px">Площадь трапеции:</li>
</ul>

<ul style="float: left; list-style-type: none">
<li><input name="xA" onkeyup="mF ()"></li>
<li><input name="xB" onkeyup="mF ()"></li>
<li><input name="xH" onkeyup="mF ()"></li>
<li style="margin-top: 8px"><input name="rS" readonly></li>
<li style="margin-top: 8px"><input type="reset" value="Сбросить"></li>
</ul>
</form>

  Ответить  
 
 автор: garik1990   (16.09.2010 в 17:39)   письмо автору
 
   для: АЯ   (16.09.2010 в 17:33)
 

большое спасибо

  Ответить  
 
 автор: garik1990   (19.09.2010 в 12:30)   письмо автору
 
   для: garik1990   (16.09.2010 в 17:39)
 

а такой скрипт передалать реально с командой onChange ????

  Ответить  
 
 автор: garik1990   (19.09.2010 в 12:59)   письмо автору
 
   для: garik1990   (19.09.2010 в 12:30)
 

<form name="MyForm">
<tr>
<td>Введите длинну первого основания: </td>
<td>x=</td>
<td><input type="text" name="a"></td>
</tr>

<tr>
<td>Введите длинну второго основания: </td>
<td>x=</td>
<td><input type="text" name="b"></td>
</tr>
<tr>
<td> Введите высоту:</td>
<td>y=</td>
<td><input type="text" name="h" onchange= ????></td>
</tr>
как с помощью onChange посчитать?

  Ответить  
 
 автор: АЯ   (19.09.2010 в 13:41)   письмо автору
 
   для: garik1990   (19.09.2010 в 12:30)
 

Или замените onkeyup на onchange (все три штуки).

Или удалите два первых onkeyup="mF ()", а вместо третьего onkeyup пропишите onchange.

  Ответить  
 
 автор: garik1990   (19.09.2010 в 13:45)   письмо автору
 
   для: АЯ   (19.09.2010 в 13:41)
 

спасибо.

  Ответить  
 
 автор: АЯ   (19.09.2010 в 13:58)   письмо автору
 
   для: garik1990   (19.09.2010 в 13:45)
 

Пожалуйста.

Только ответьте на один вопрос.
Если Вас зовут "Гарик" (с одним Р), то Ваше имя в дательном падеже ("Гарику") разве пишется с двумя Р ?
----

У меня (правильно) - Длина нижнего основания
У Вас (безграмотно) - Введите длинну второго основания

  Ответить  
 
 автор: garik1990   (19.09.2010 в 14:05)   письмо автору
 
   для: АЯ   (19.09.2010 в 13:58)
 

ну я в это время об орфографии просто не задумывался...

если onkeyup заменить на onchange перестает работать(

  Ответить  
 
 автор: АЯ   (19.09.2010 в 14:14)   письмо автору
 
   для: garik1990   (19.09.2010 в 14:05)
 

Походу, Вы не только об орфографии не задумываетесь, но и обо всём остальном.

Всё РАБОТАЕТ.

Событие onchange на текстовом поле срабатывает после того, как текстовое поле теряет фокус.
Т.е. Вам надо ввести все три значения и потом (после ввода последнего значения) ткнуть мышей где-нить в любом месте страницы.

  Ответить  
 
 автор: garik1990   (19.09.2010 в 14:40)   письмо автору
 
   для: АЯ   (19.09.2010 в 14:14)
 

я согласен что я полный нуб с програмировании. но я пытаюсь разобраться во всем. последний вопрос у меня и все.

<script>
function mF ()
{

var a=Number(document.forms["myFRM"].xA.value)
var b=Number(document.forms["myFRM"].xB.value)
var h=Number(document.forms["myFRM"].xH.value)

}
document.forms.myFRM ['rS'].value = (((a + b)*h) / 2);
}
</script>

<form name="myFRM">
<ul style="float: left; list-style-type: none; text-align: right">
<li>Длина нижнего основания:</li>
<li>Длина верхнего основания:</li>
<li>Высота:</li>
<li style="text-align: right; margin-top: 8px">Площадь трапеции:</li>
</ul>

<ul style="float: left; list-style-type: none">
<li><input type="text" name="xA">
<li><input type="text" name="xB">
<li><input type="text" name="xH" onchange="mF ()"> >
<li style="margin-top: 8px"><input type="text" name="rS" readonly>


я наверное не совсем правильно записал переменные?.

P.S. спасибо за понимание и терпение

  Ответить  
 
 автор: АЯ   (19.09.2010 в 14:47)   письмо автору
 
   для: garik1990   (19.09.2010 в 14:40)
 

Фигурная скобка ПЕРЕД document.forms.myFRM ['rS'].value = (((a + b)*h) / 2); не нужна.
Уберите.
И будет работать.
Но ТОЛЬКО если в поля будут введены именно числовые значения.

Если же пользователь случайно ошибётся и введёт не цифры/минус/точку, то у Вас сразу же появится NaN в результирующем окошке.

Мой же вариант такие ошибки пользователя обрабатывает.

  Ответить  
 
 автор: garik1990   (19.09.2010 в 14:49)   письмо автору
 
   для: АЯ   (19.09.2010 в 14:47)
 

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

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования