Несколько javascript на одной странице

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО

Конфликт скриптов на одной странице. Как разрешить?

#16 7 августа 2013 в 16:25
Посмотрите внимательно, как вы пишете. У вас два раза один метод вызывается.
#17 7 августа 2013 в 16:31
Странник
это не я написал, скопировал код на одном из сайтов
я только начал пробовать свои силы в программировании
пока получилось позаимствовать части скриптов и переделать под свой проект
отдельно работают
а вот на одной странице — нет
читаю-читаю, но решения готового нигде нет, наверное, его просто и не может быть =)

еще б знать о чем читать… а то оочень сложно вспомнить, когда никогда не знал
#18 7 августа 2013 в 16:32
вы пытаетесь повесить свои функции на событие готовности страницы. Вам нужно просто исправить свой код.
#19 7 августа 2013 в 16:36

вы пытаетесь повесить свои функции на событие готовности страницы

Smith
значит совсем не то


дабы голову не дурить вам, уважаемые программисты, что я могу сделать? код скриптов сюда выложить?
#20 7 августа 2013 в 16:52
если я для каждого скрипта внутри функции объявлю локальные переменные, проблема решится?
#21 7 августа 2013 в 16:59
Готового решения почти никогда нет. Исключения бывают, но редко. Для начала могу посоветоватовать не пытаться проглотить больше, чем пролазит через глотку, а жевать маленькими кусочками. Поставьте один скрипт, разберитесь с ним досконально — что каждая строчка делает, как присваиваются переменные. Затем цепляйте другой скрипт и точно так же построчно и с ним… И так далее.
Причем, замечу, это вовсе не научит вас программировать. Вы просто разберетесь с чужим кодом, ну, может подправите его чуток…
#22 7 августа 2013 в 17:13

Вы просто разберетесь с чужим кодом, ну, может подправите его чуток....

Странник

мне не понятен масштаб самой проблемы
подскажите, пожалуйста,

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

или проблема в другом?
#23 7 августа 2013 в 17:19

мне не понятен масштаб самой проблемы

*beez*
Масштаб в том, что Вы пытаетесь проглотить больше, чем проходит через горло. Я вам уже дал рецепт. Не скачите галопом по европам, а тщательно разбирайтесь.
#24 7 августа 2013 в 17:22
Странник
ок, попробую сначала один скрипт запустить из пяти не работающих
"скачу голопом", потому что хочу знать куда капать, чтобы не тратить время на бессмысленные попытки "метода тыка", то есть пытаюсь обозначить проблему. иначе могу пробовать делать то что априори неверно будет (
#25 7 августа 2013 в 20:29
Кто-нибудь, пожалуйста, напишите доступно для новичка в программировании, какие могут быть причины тому, что несколько скриптов не работают на одной странице?

(понятно что могут быть одинаковые переменные и функции, ошибка получения значения в консоли)

И какими способами можно заставить работать 9 почти одинаковых скриптов на одной странице без переопределений и ошибок получения значения? Может обернуть их в какую-то функцию или метод добавить? Пожалуйста, помогите, хоть советом
#26 7 августа 2013 в 21:10
*beez*, поставить var при определении всех переменных в ваших скриптах. Странник, больше нахамил, чем помог, пытаясь сказать это.
#27 7 августа 2013 в 21:16

поставить var

lokanaft
то есть в каждом из скриптов нужно глобальные переменные (которые стали глобальными потому что не определены как локальные) дописать var?

зы. Странник все-таки подтолкнул в нужную сторону, теперь хоть узнал про локальные и глобальные переменные =)

приведу пример, чтобы приблизиться к разгадке

имеется скрипт калькулятора:
  1. function usage()
  2. {
  3. if (isNaN(document.form.sqm.value) | isNaN(document.form.P.value))
  4. {
  5. alert("Введите число. В десятичных дробях нужно использовать точку вместо запятой.")}
  6. else
  7. {
  8. document.form.tiles.value=document.form.sqm.value;
  9. document.form.main_run.value=document.form.P.value;
  10. document.form.cross_tee.value=document.form.sqm.value*2.9;
  11. document.form.longer.value=Math.ceil(document.form.sqm.value*0.2);
  12. document.form.union.value=Math.ceil(document.form.sqm.value*1.7);
  13. document.form.hanger.value=Math.ceil(document.form.sqm.value*0.7);
  14. document.form.hanger_t.value=Math.ceil(document.form.sqm.value*0.7);
  15. document.form.screw1.value=Math.ceil(document.form.sqm.value*10);
  16. document.form.screw2.value=Math.ceil(document.form.sqm.value*23);
  17. document.form.band.value=document.form.sqm.value*1.2;
  18. document.form.shpak.value=document.form.sqm.value*0.4;
  19. document.form.anchor.value=Math.ceil(document.form.sqm.value*0.7);
  20. document.form.dubel.value=document.form.main_run.value*2;
  21. }}
  22.  
  23. </script>
запускается он, как я понял, этим
  1. <input type="button" name="submit" value="Рассчитать" onclick="usage()"></td>
когда один на странице, то работает. но стоит добавить второй скрипт:
  1. <input type="button" name="Button" value="Рассчитать" onclick="
  2. yyy.value=0.1*x1.value*x2.value*x3.value*x4.value*x5.value*x6.value*x7.value*x8.value+' кВт';
  3. ttt.value=(0.1*x1.value*x2.value*x3.value*x4.value*x5.value*x6.value*x7.value*x8.value)*1.2+' кВт'
  4. "></td>
и получаем ошибку:
  1. Uncaught TypeError: Cannot read property 'value' of undefined
по ходу перемешиваются скрипты и классы <table class="my_table">
может быть ошибка получения значения из-за того что <table class="my_table"> в каждом скрипте и форме калькулятора?

между тем 4 из девяти работают вместе, а остальные нет. головотрясение какое-то. обычно даже если не знаю что-то то гугл и форумы выручают, а тут прям засада. то ли джаваскрипты программировать сложно настолько что с наскока и не взять высоту…
#28 7 августа 2013 в 21:38
*beez*, эта ошибка значит, что что-то из ваших x1-x8 не определено глобально (если это переменные). Либо использовать нечто вроде document.form.x1.value, если это элементы формы.
Вы уверены, что второй скрипт работает отдельно — в отсутствии первого?
#29 7 августа 2013 в 21:41
lokanaft
да, уверен
тут не весь код
не стал копировать код самой формы. откуда и берутся х1,… х8

зы. ошибка не во втором скрипте а в первом, второй работает и при 9 калькуляторах на странице
#30 7 августа 2013 в 21:47
Ну значит где-то тут document.form.sqm.value… document.form.main_run.value ничего нет.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.