*beez*
+185
Репутация
20
Рейтинг
Smith, если есть минутка взгляните, пожалуйста, на прикрепленные скрипты и формы в 31 и 32 сообщении
простите меня что целиком код вставляю на целую страницу, но уже 9 часов пытаюсь понять почему вышеуказанный скрипт не работает одновременно с этим:
<form name="form" action="" style="width:580px"> <table class="my_table"> <tbody><tr align="left"> <td> Окна</td><td> <select style="width:300px" name="x1"> <option value="0.85">Тройной стеклопакет </option> <option value="1">Двойной стеклопакет</option> <option value="1.27">Обычное (двойное) остекление</option> </select> </td> </tr><tr align="left"> <td> Стены</td><td> <select style="width:300px" name="x2"> <option value="0.85">Хорошая теплоизоляция</option> <option value="1">Два кирпича или 150 мм утеплителя</option> <option value="1.27">Плохая теплоизоляция</option> </select> </td> </tr><tr align="left"> <td> Соотношение площадей окон и пола</td><td> <select style="width:300px" name="x3"> <option value="0.8">10%</option> <option value="0.9">20%</option> <option value="1">30%</option> <option value="1.1">40%</option> <option value="1.2">50%</option> </select> </td> </tr><tr align="left"> <td> Температура снаружи помещения</td><td> <select style="width:300px" name="x4"> <option value="0.7">-10C</option> <option value="0.9">-15C</option> <option value="1.1">-20C</option> <option value="1.3">-25C</option> <option value="1.5">-30C</option> <option value="1.7">-35C</option> </select> </td> </tr><tr align="left"> <td> Число стен выходящих наружу</td><td> <select style="width:300px" name="x5"> <option value="1">Одна</option> <option value="1.2">Две</option> <option value="1.3">Три</option> <option value="1.4">Четыре</option> </select> </td> </tr> <tr align="left"> <td> Тип помещения над рассчитываемым</td><td> <select style="width:300px" name="x6"> <option value="0.8">Обогреваемое помещение</option> <option value="0.9">Теплый чердак</option> <option value="1">Холодный чердак</option> </select> </td> </tr><tr align="left"> <td> Высота помещения</td><td> <select style="width:300px" name="x7"> <option value="1">2,5 метра</option> <option value="1.05">3 метра</option> <option value="1.1">3,5 метра</option> <option value="1.15">4 метра</option> <option value="1.2">4,5 метра</option> </select> </td> </tr><tr align="left"> <td> Площадь помещения </td><td> <input style="width:290px" type="text" name="x8"> </td> </tr> <tr align="center"> <td colspan="2"> <input type="button" name="Button" value="Рассчитать" onclick=" yyy.value=0.1*x1.value*x2.value*x3.value*x4.value*x5.value*x6.value*x7.value*x8.value+' кВт'; ttt.value=(0.1*x1.value*x2.value*x3.value*x4.value*x5.value*x6.value*x7.value*x8.value)*1.2+' кВт' "> </td> </tr><tr id="my_color" align="left"> <td> Теплопотери</td><td> <input style="width:290px" type="text1" name="yyy"> </td> </tr><tr id="my_color" align="left"> <td> Теплопроизводительность котла</td><td> <input style="width:290px" type="text1" name="ttt"></td> </tr> </tbody></table> </form>
то есть ничего нет? это же, как понимаю функции вывода значений в ячейки в зависимости от .sqm.value и .P.valueничего нет.
вот весь код калькулятора скрипт + форма калькулятора
<script type="text/javascript" language="JavaScript"> function usage() { if (isNaN(document.form.sqm.value) | isNaN(document.form.P.value)) { alert("Введите число. В десятичных дробях нужно использовать точку вместо запятой.")} else { document.form.tiles.value=document.form.sqm.value; document.form.main_run.value=document.form.P.value; document.form.cross_tee.value=document.form.sqm.value*2.9; document.form.band.value=document.form.sqm.value*1.2; document.form.shpak.value=document.form.sqm.value*0.4; document.form.dubel.value=document.form.main_run.value*2; }} </script> <center> <center> <form name="form" style="width:420px"> <table class="my_table"> <tbody><tr> <td>Введите площадь потолка</td> <td align="center"><input type="text" size="10" maxlength="10" name="sqm"></td> <td>м<sup>2</sup></td> </tr> <tr> <td>Введите периметр потолка</td> <td align="center"><input type="text" size="10" maxlength="10" name="P"></td> <td>м</td> </tr> <tr align="center"><td colspan="5"> </td></tr> <tr> <td colspan="2" align="center"><input type="button" name="submit" value="Рассчитать" onclick="usage()"></td> </tr> </tbody></table> <table class="my_table"> <tbody><tr align="left"> <td>Гипсокартонный лист (м<sup>2</sup>)</td> <td><input type="text1" size="12" maxlength="12" name="tiles"></td> </tr> <tr align="left"> <td>Профиль направляющий ПН-28 (п.м.)</td> <td><input type="text1" size="12" maxlength="12" name="main_run"></td> </tr> <tr align="left"> <td>Профиль потолочный ПП-60 (п.м.)</td> <td><input type="text1" size="12" maxlength="12" name="cross_tee"></td> </tr> <tr align="left"> <td>Удлинитель для ПП-профилей П-60 (шт.)</td> <td><input type="text1" size="12" maxlength="12" name="longer"></td> </tr> <tr align="left"> <td>Соединитель одноуровневый (шт.)</td> <td><input type="text1" size="12" maxlength="12" name="union"></td> </tr> <tr align="left"> <td>Подвес для ПП-профилей (шт.)</td> <td><input type="text1" size="12" maxlength="12" name="hanger"></td> </tr> <tr align="left"> <td>Тяга к подвесу (шт.)</td> <td><input type="text1" size="12" maxlength="12" name="hanger_t"></td> </tr> <tr align="left"> <td>Шуруп для соединения профилей (шт.)</td> <td><input type="text1" size="12" maxlength="12" name="screw1"></td> </tr> <tr align="left"> <td>Шуруп 30мм (для крепления ГКЛ) (шт.)</td> <td align="center"><input type="text1" size="12" maxlength="12" name="screw2"></td> </tr> <tr align="left"> <td>Лента для швов (п.м.)</td> <td><input type="text1" size="12" maxlength="12" name="band"></td> </tr> <tr align="left"> <td>Шпаклевка для швов (кг)</td> <td><input type="text1" size="12" maxlength="12" name="shpak"></td> </tr> <tr align="left"> <td>Анкер для крепления к потолку (шт.)</td> <td><input type="text1" size="12" maxlength="12" name="anchor"></td> </tr> <tr align="left"> <td>Дюбель для крепления ПН-профиля (шт.)</td> <td><input type="text1" size="12" maxlength="12" name="dubel"></td> </tr> </tbody></table> </form></center>
да, уверен
тут не весь код
не стал копировать код самой формы. откуда и берутся х1,… х8
зы. ошибка не во втором скрипте а в первом, второй работает и при 9 калькуляторах на странице
тут не весь код
не стал копировать код самой формы. откуда и берутся х1,… х8
зы. ошибка не во втором скрипте а в первом, второй работает и при 9 калькуляторах на странице
то есть в каждом из скриптов нужно глобальные переменные (которые стали глобальными потому что не определены как локальные) дописать var?поставить var
зы. Странник все-таки подтолкнул в нужную сторону, теперь хоть узнал про локальные и глобальные переменные =)
приведу пример, чтобы приблизиться к разгадке
имеется скрипт калькулятора:
function usage() { if (isNaN(document.form.sqm.value) | isNaN(document.form.P.value)) { alert("Введите число. В десятичных дробях нужно использовать точку вместо запятой.")} else { document.form.tiles.value=document.form.sqm.value; document.form.main_run.value=document.form.P.value; document.form.cross_tee.value=document.form.sqm.value*2.9; document.form.band.value=document.form.sqm.value*1.2; document.form.shpak.value=document.form.sqm.value*0.4; document.form.dubel.value=document.form.main_run.value*2; }} </script>
<input type="button" name="submit" value="Рассчитать" onclick="usage()"></td>
<input type="button" name="Button" value="Рассчитать" onclick=" yyy.value=0.1*x1.value*x2.value*x3.value*x4.value*x5.value*x6.value*x7.value*x8.value+' кВт'; ttt.value=(0.1*x1.value*x2.value*x3.value*x4.value*x5.value*x6.value*x7.value*x8.value)*1.2+' кВт' "></td>
Uncaught TypeError: Cannot read property 'value' of undefined
может быть ошибка получения значения из-за того что <table class="my_table"> в каждом скрипте и форме калькулятора?
между тем 4 из девяти работают вместе, а остальные нет. головотрясение какое-то. обычно даже если не знаю что-то то гугл и форумы выручают, а тут прям засада. то ли джаваскрипты программировать сложно настолько что с наскока и не взять высоту…
Кто-нибудь, пожалуйста, напишите доступно для новичка в программировании, какие могут быть причины тому, что несколько скриптов не работают на одной странице?
(понятно что могут быть одинаковые переменные и функции, ошибка получения значения в консоли)
И какими способами можно заставить работать 9 почти одинаковых скриптов на одной странице без переопределений и ошибок получения значения? Может обернуть их в какую-то функцию или метод добавить? Пожалуйста, помогите, хоть советом
(понятно что могут быть одинаковые переменные и функции, ошибка получения значения в консоли)
И какими способами можно заставить работать 9 почти одинаковых скриптов на одной странице без переопределений и ошибок получения значения? Может обернуть их в какую-то функцию или метод добавить? Пожалуйста, помогите, хоть советом
ок, попробую сначала один скрипт запустить из пяти не работающих
"скачу голопом", потому что хочу знать куда капать, чтобы не тратить время на бессмысленные попытки "метода тыка", то есть пытаюсь обозначить проблему. иначе могу пробовать делать то что априори неверно будет (
"скачу голопом", потому что хочу знать куда капать, чтобы не тратить время на бессмысленные попытки "метода тыка", то есть пытаюсь обозначить проблему. иначе могу пробовать делать то что априори неверно будет (
Вы просто разберетесь с чужим кодом, ну, может подправите его чуток....
мне не понятен масштаб самой проблемы
подскажите, пожалуйста,
все 9ть скриптов не работают одновременно на странице, потому что в них имеются глобальные переменные, которые следует сделать локальными для каждого скрипта? и мне надо понять какие переменные используются и какие из них необходимо определить глобальными и какие локальными
или проблема в другом?
если я для каждого скрипта внутри функции объявлю локальные переменные, проблема решится?
значит совсем не товы пытаетесь повесить свои функции на событие готовности страницы
дабы голову не дурить вам, уважаемые программисты, что я могу сделать? код скриптов сюда выложить?
это не я написал, скопировал код на одном из сайтов
я только начал пробовать свои силы в программировании
пока получилось позаимствовать части скриптов и переделать под свой проект
отдельно работают
а вот на одной странице — нет
читаю-читаю, но решения готового нигде нет, наверное, его просто и не может быть =)
еще б знать о чем читать… а то оочень сложно вспомнить, когда никогда не знал
я только начал пробовать свои силы в программировании
пока получилось позаимствовать части скриптов и переделать под свой проект
отдельно работают
а вот на одной странице — нет
читаю-читаю, но решения готового нигде нет, наверное, его просто и не может быть =)
еще б знать о чем читать… а то оочень сложно вспомнить, когда никогда не знал
Вы правы. Читать про локальные и глобальные переменные? Решение озвученное в сообщении #12 не трогать? Есть проще решение?Садитесь-ка за учебники.
Означает что невозможно получить значение, если вы в функции usage используете значение какого либо инпута и вешаете ее на клик той же кнопки, то вам следует так же передавать значение этого поля, либо явно получать из самой функции.
инпуты получают значение из той же функции
я услышал вас
сейчас еще немного почитаю, всмотрюсь и точно буду знать, что конкретно у меня не получается, что спрашивать
пока имею 9 скриптов, которые вывел на станицу и некоторые из них перестали работать. то есть формы для ввода значений отображаются где надо, но скрипты отказываются работать
сейчас попробую перенести все скрипты в один файл, и либо создам обработчик на сами события, например, при помощи функции, которая вешает эти обработчики:
а потом каждый скрипт в:
либо, если не заработает, то буду пробовать создать ООП. Но в этом вообще пока не понимаю, так что пока вариант 1 буду пробовать
зы. кажется что не туда капаю(
, я пока еще ничего не намудрил. думаю как оформить, чтобы "локализировать" (изолировать) каждый скрипт на странице
сейчас еще немного почитаю, всмотрюсь и точно буду знать, что конкретно у меня не получается, что спрашивать
пока имею 9 скриптов, которые вывел на станицу и некоторые из них перестали работать. то есть формы для ввода значений отображаются где надо, но скрипты отказываются работать
сейчас попробую перенести все скрипты в один файл, и либо создам обработчик на сами события, например, при помощи функции, которая вешает эти обработчики:
function addListener(obj, type, listener) { if (obj.addEventListener) { obj.addEventListener(type, listener, false); return true; } else if(obj.attachEvent) { obj.attachEvent('on' + type, listener); return true; } return false; }
addListener(window, 'load', function() { // инициализация первого скрипта }); addListener(window, 'load', function() { // инициализация второго скрипта });
зы. кажется что не туда капаю(
, я пока еще ничего не намудрил. думаю как оформить, чтобы "локализировать" (изолировать) каждый скрипт на странице
в консоли ошибка:
Uncaught TypeError: Cannot read property 'value' of undefined
usage
onclick
сама функция function usage()
onclick="usage()"
есть совпадения в коде скриптов
профессионалы отзовитесь *рудз*! неужели нет способа запустить 9 похожих скриптов на одной странице, чтобы переменные и функции не перемешивались (не переназначались)???
Uncaught TypeError: Cannot read property 'value' of undefined
usage
onclick
сама функция function usage()
onclick="usage()"
есть совпадения в коде скриптов
профессионалы отзовитесь *рудз*! неужели нет способа запустить 9 похожих скриптов на одной странице, чтобы переменные и функции не перемешивались (не переназначались)???